home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 5 / BBS in a Box -Volume V (BBS in a Box) (April 1992).iso / Files / Prog / M / MPWGCC (Sources).cpt / Sources / optabs.c < prev    next >
MacBinary  |  1990-08-31  |  72.6 KB  |  [TEXT/MPS ]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
66% dexvert Compact Compressed (Unix) (archive/compact) ext Supported
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, Fri Aug 31 12:46:07 1990, modified Fri Aug 31 12:46:07 1990, creator 'MPS ', type ASCII, 73646 bytes "optabs.c" , at 0x1202e 428 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[MPS ]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 08 6f 70 74 61 62 73 | 2e 63 00 00 00 00 00 00 |..optabs|.c......|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 50 53 | 20 00 00 00 00 00 00 00 |.TEXTMPS| .......|
|00000050| 00 00 00 00 01 1f ae 00 | 00 01 ac a3 04 44 cf a3 |........|.....D..|
|00000060| 04 44 cf 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |.D......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 6f 77 00 00 |........|....ow..|
|00000080| 2f 2a 20 45 78 70 61 6e | 64 20 74 68 65 20 62 61 |/* Expan|d the ba|
|00000090| 73 69 63 20 75 6e 61 72 | 79 20 61 6e 64 20 62 69 |sic unar|y and bi|
|000000a0| 6e 61 72 79 20 61 72 69 | 74 68 6d 65 74 69 63 20 |nary ari|thmetic |
|000000b0| 6f 70 65 72 61 74 69 6f | 6e 73 2c 20 66 6f 72 20 |operatio|ns, for |
|000000c0| 47 4e 55 20 63 6f 6d 70 | 69 6c 65 72 2e 0d 20 20 |GNU comp|iler.. |
|000000d0| 20 43 6f 70 79 72 69 67 | 68 74 20 28 43 29 20 31 | Copyrig|ht (C) 1|
|000000e0| 39 38 37 2c 20 31 39 38 | 38 20 46 72 65 65 20 53 |987, 198|8 Free S|
|000000f0| 6f 66 74 77 61 72 65 20 | 46 6f 75 6e 64 61 74 69 |oftware |Foundati|
|00000100| 6f 6e 2c 20 49 6e 63 2e | 0d 20 20 20 43 6f 70 79 |on, Inc.|. Copy|
|00000110| 72 69 67 68 74 20 28 43 | 29 20 31 39 38 39 2c 20 |right (C|) 1989, |
|00000120| 31 39 39 30 20 41 70 70 | 6c 65 20 43 6f 6d 70 75 |1990 App|le Compu|
|00000130| 74 65 72 2c 20 49 6e 63 | 2e 0d 0d 54 68 69 73 20 |ter, Inc|...This |
|00000140| 66 69 6c 65 20 69 73 20 | 70 61 72 74 20 6f 66 20 |file is |part of |
|00000150| 47 4e 55 20 43 43 2e 0d | 0d 47 4e 55 20 43 43 20 |GNU CC..|.GNU CC |
|00000160| 69 73 20 66 72 65 65 20 | 73 6f 66 74 77 61 72 65 |is free |software|
|00000170| 3b 20 79 6f 75 20 63 61 | 6e 20 72 65 64 69 73 74 |; you ca|n redist|
|00000180| 72 69 62 75 74 65 20 69 | 74 20 61 6e 64 2f 6f 72 |ribute i|t and/or|
|00000190| 20 6d 6f 64 69 66 79 0d | 69 74 20 75 6e 64 65 72 | modify.|it under|
|000001a0| 20 74 68 65 20 74 65 72 | 6d 73 20 6f 66 20 74 68 | the ter|ms of th|
|000001b0| 65 20 47 4e 55 20 47 65 | 6e 65 72 61 6c 20 50 75 |e GNU Ge|neral Pu|
|000001c0| 62 6c 69 63 20 4c 69 63 | 65 6e 73 65 20 61 73 20 |blic Lic|ense as |
|000001d0| 70 75 62 6c 69 73 68 65 | 64 20 62 79 0d 74 68 65 |publishe|d by.the|
|000001e0| 20 46 72 65 65 20 53 6f | 66 74 77 61 72 65 20 46 | Free So|ftware F|
|000001f0| 6f 75 6e 64 61 74 69 6f | 6e 3b 20 65 69 74 68 65 |oundatio|n; eithe|
|00000200| 72 20 76 65 72 73 69 6f | 6e 20 31 2c 20 6f 72 20 |r versio|n 1, or |
|00000210| 28 61 74 20 79 6f 75 72 | 20 6f 70 74 69 6f 6e 29 |(at your| option)|
|00000220| 0d 61 6e 79 20 6c 61 74 | 65 72 20 76 65 72 73 69 |.any lat|er versi|
|00000230| 6f 6e 2e 0d 0d 47 4e 55 | 20 43 43 20 69 73 20 64 |on...GNU| CC is d|
|00000240| 69 73 74 72 69 62 75 74 | 65 64 20 69 6e 20 74 68 |istribut|ed in th|
|00000250| 65 20 68 6f 70 65 20 74 | 68 61 74 20 69 74 20 77 |e hope t|hat it w|
|00000260| 69 6c 6c 20 62 65 20 75 | 73 65 66 75 6c 2c 0d 62 |ill be u|seful,.b|
|00000270| 75 74 20 57 49 54 48 4f | 55 54 20 41 4e 59 20 57 |ut WITHO|UT ANY W|
|00000280| 41 52 52 41 4e 54 59 3b | 20 77 69 74 68 6f 75 74 |ARRANTY;| without|
|00000290| 20 65 76 65 6e 20 74 68 | 65 20 69 6d 70 6c 69 65 | even th|e implie|
|000002a0| 64 20 77 61 72 72 61 6e | 74 79 20 6f 66 0d 4d 45 |d warran|ty of.ME|
|000002b0| 52 43 48 41 4e 54 41 42 | 49 4c 49 54 59 20 6f 72 |RCHANTAB|ILITY or|
|000002c0| 20 46 49 54 4e 45 53 53 | 20 46 4f 52 20 41 20 50 | FITNESS| FOR A P|
|000002d0| 41 52 54 49 43 55 4c 41 | 52 20 50 55 52 50 4f 53 |ARTICULA|R PURPOS|
|000002e0| 45 2e 20 20 53 65 65 20 | 74 68 65 0d 47 4e 55 20 |E. See |the.GNU |
|000002f0| 47 65 6e 65 72 61 6c 20 | 50 75 62 6c 69 63 20 4c |General |Public L|
|00000300| 69 63 65 6e 73 65 20 66 | 6f 72 20 6d 6f 72 65 20 |icense f|or more |
|00000310| 64 65 74 61 69 6c 73 2e | 0d 0d 59 6f 75 20 73 68 |details.|..You sh|
|00000320| 6f 75 6c 64 20 68 61 76 | 65 20 72 65 63 65 69 76 |ould hav|e receiv|
|00000330| 65 64 20 61 20 63 6f 70 | 79 20 6f 66 20 74 68 65 |ed a cop|y of the|
|00000340| 20 47 4e 55 20 47 65 6e | 65 72 61 6c 20 50 75 62 | GNU Gen|eral Pub|
|00000350| 6c 69 63 20 4c 69 63 65 | 6e 73 65 0d 61 6c 6f 6e |lic Lice|nse.alon|
|00000360| 67 20 77 69 74 68 20 47 | 4e 55 20 43 43 3b 20 73 |g with G|NU CC; s|
|00000370| 65 65 20 74 68 65 20 66 | 69 6c 65 20 43 4f 50 59 |ee the f|ile COPY|
|00000380| 49 4e 47 2e 20 20 49 66 | 20 6e 6f 74 2c 20 77 72 |ING. If| not, wr|
|00000390| 69 74 65 20 74 6f 0d 74 | 68 65 20 46 72 65 65 20 |ite to.t|he Free |
|000003a0| 53 6f 66 74 77 61 72 65 | 20 46 6f 75 6e 64 61 74 |Software| Foundat|
|000003b0| 69 6f 6e 2c 20 36 37 35 | 20 4d 61 73 73 20 41 76 |ion, 675| Mass Av|
|000003c0| 65 2c 20 43 61 6d 62 72 | 69 64 67 65 2c 20 4d 41 |e, Cambr|idge, MA|
|000003d0| 20 30 32 31 33 39 2c 20 | 55 53 41 2e 20 20 2a 2f | 02139, |USA. */|
|000003e0| 0d 0d 0d 23 69 6e 63 6c | 75 64 65 20 22 63 6f 6e |...#incl|ude "con|
|000003f0| 66 69 67 2e 68 22 0d 23 | 69 6e 63 6c 75 64 65 20 |fig.h".#|include |
|00000400| 22 72 74 6c 2e 68 22 0d | 23 69 6e 63 6c 75 64 65 |"rtl.h".|#include|
|00000410| 20 22 74 72 65 65 2e 68 | 22 0d 23 69 6e 63 6c 75 | "tree.h|".#inclu|
|00000420| 64 65 20 22 66 6c 61 67 | 73 2e 68 22 0d 23 69 6e |de "flag|s.h".#in|
|00000430| 63 6c 75 64 65 20 22 69 | 6e 73 6e 2d 66 6c 61 67 |clude "i|nsn-flag|
|00000440| 73 2e 68 22 0d 23 69 6e | 63 6c 75 64 65 20 22 69 |s.h".#in|clude "i|
|00000450| 6e 73 6e 2d 63 6f 64 65 | 73 2e 68 22 0d 23 69 6e |nsn-code|s.h".#in|
|00000460| 63 6c 75 64 65 20 22 65 | 78 70 72 2e 68 22 0d 23 |clude "e|xpr.h".#|
|00000470| 69 6e 63 6c 75 64 65 20 | 22 69 6e 73 6e 2d 63 6f |include |"insn-co|
|00000480| 6e 66 69 67 2e 68 22 0d | 23 69 6e 63 6c 75 64 65 |nfig.h".|#include|
|00000490| 20 22 72 65 63 6f 67 2e | 68 22 0d 0d 2f 2a 20 49 | "recog.|h"../* I|
|000004a0| 6e 20 41 4e 53 49 20 43 | 20 77 65 20 63 6f 75 6c |n ANSI C| we coul|
|000004b0| 64 20 77 72 69 74 65 20 | 4d 4f 44 45 20 2b 20 31 |d write |MODE + 1|
|000004c0| 2c 20 62 75 74 20 74 72 | 61 64 69 74 69 6f 6e 61 |, but tr|aditiona|
|000004d0| 6c 20 43 20 63 6f 6d 70 | 69 6c 65 72 73 0d 20 20 |l C comp|ilers. |
|000004e0| 20 73 65 65 6d 20 74 6f | 20 72 65 6a 65 63 74 20 | seem to| reject |
|000004f0| 69 74 2e 20 20 2a 2f 0d | 23 64 65 66 69 6e 65 20 |it. */.|#define |
|00000500| 49 4e 43 5f 4d 4f 44 45 | 28 4d 4f 44 45 29 20 28 |INC_MODE|(MODE) (|
|00000510| 65 6e 75 6d 20 6d 61 63 | 68 69 6e 65 5f 6d 6f 64 |enum mac|hine_mod|
|00000520| 65 29 20 28 28 69 6e 74 | 29 28 4d 4f 44 45 29 20 |e) ((int|)(MODE) |
|00000530| 2b 20 31 29 0d 0d 2f 2a | 20 45 61 63 68 20 6f 70 |+ 1)../*| Each op|
|00000540| 74 61 62 20 63 6f 6e 74 | 61 69 6e 73 20 69 6e 66 |tab cont|ains inf|
|00000550| 6f 20 6f 6e 20 68 6f 77 | 20 74 68 69 73 20 74 61 |o on how| this ta|
|00000560| 72 67 65 74 20 6d 61 63 | 68 69 6e 65 0d 20 20 20 |rget mac|hine. |
|00000570| 63 61 6e 20 70 65 72 66 | 6f 72 6d 20 61 20 70 61 |can perf|orm a pa|
|00000580| 72 74 69 63 75 6c 61 72 | 20 6f 70 65 72 61 74 69 |rticular| operati|
|00000590| 6f 6e 0d 20 20 20 66 6f | 72 20 61 6c 6c 20 73 69 |on. fo|r all si|
|000005a0| 7a 65 73 20 61 6e 64 20 | 6b 69 6e 64 73 20 6f 66 |zes and |kinds of|
|000005b0| 20 6f 70 65 72 61 6e 64 | 73 2e 0d 0d 20 20 20 54 | operand|s... T|
|000005c0| 68 65 20 6f 70 65 72 61 | 74 69 6f 6e 20 74 6f 20 |he opera|tion to |
|000005d0| 62 65 20 70 65 72 66 6f | 72 6d 65 64 20 69 73 20 |be perfo|rmed is |
|000005e0| 6f 66 74 65 6e 20 73 70 | 65 63 69 66 69 65 64 0d |often sp|ecified.|
|000005f0| 20 20 20 62 79 20 70 61 | 73 73 69 6e 67 20 6f 6e | by pa|ssing on|
|00000600| 65 20 6f 66 20 74 68 65 | 73 65 20 6f 70 74 61 62 |e of the|se optab|
|00000610| 73 20 61 73 20 61 6e 20 | 61 72 67 75 6d 65 6e 74 |s as an |argument|
|00000620| 2e 0d 0d 20 20 20 53 65 | 65 20 65 78 70 72 2e 68 |... Se|e expr.h|
|00000630| 20 66 6f 72 20 64 6f 63 | 75 6d 65 6e 74 61 74 69 | for doc|umentati|
|00000640| 6f 6e 20 6f 66 20 74 68 | 65 73 65 20 6f 70 74 61 |on of th|ese opta|
|00000650| 62 73 2e 20 20 2a 2f 0d | 0d 6f 70 74 61 62 20 61 |bs. */.|.optab a|
|00000660| 64 64 5f 6f 70 74 61 62 | 3b 0d 6f 70 74 61 62 20 |dd_optab|;.optab |
|00000670| 73 75 62 5f 6f 70 74 61 | 62 3b 0d 6f 70 74 61 62 |sub_opta|b;.optab|
|00000680| 20 73 6d 75 6c 5f 6f 70 | 74 61 62 3b 0d 6f 70 74 | smul_op|tab;.opt|
|00000690| 61 62 20 75 6d 75 6c 5f | 6f 70 74 61 62 3b 0d 6f |ab umul_|optab;.o|
|000006a0| 70 74 61 62 20 73 6d 75 | 6c 5f 77 69 64 65 6e 5f |ptab smu|l_widen_|
|000006b0| 6f 70 74 61 62 3b 0d 6f | 70 74 61 62 20 75 6d 75 |optab;.o|ptab umu|
|000006c0| 6c 5f 77 69 64 65 6e 5f | 6f 70 74 61 62 3b 0d 6f |l_widen_|optab;.o|
|000006d0| 70 74 61 62 20 73 64 69 | 76 5f 6f 70 74 61 62 3b |ptab sdi|v_optab;|
|000006e0| 0d 6f 70 74 61 62 20 73 | 64 69 76 6d 6f 64 5f 6f |.optab s|divmod_o|
|000006f0| 70 74 61 62 3b 0d 6f 70 | 74 61 62 20 75 64 69 76 |ptab;.op|tab udiv|
|00000700| 5f 6f 70 74 61 62 3b 0d | 6f 70 74 61 62 20 75 64 |_optab;.|optab ud|
|00000710| 69 76 6d 6f 64 5f 6f 70 | 74 61 62 3b 0d 6f 70 74 |ivmod_op|tab;.opt|
|00000720| 61 62 20 73 6d 6f 64 5f | 6f 70 74 61 62 3b 0d 6f |ab smod_|optab;.o|
|00000730| 70 74 61 62 20 75 6d 6f | 64 5f 6f 70 74 61 62 3b |ptab umo|d_optab;|
|00000740| 0d 6f 70 74 61 62 20 66 | 6c 6f 64 69 76 5f 6f 70 |.optab f|lodiv_op|
|00000750| 74 61 62 3b 0d 6f 70 74 | 61 62 20 66 74 72 75 6e |tab;.opt|ab ftrun|
|00000760| 63 5f 6f 70 74 61 62 3b | 0d 6f 70 74 61 62 20 61 |c_optab;|.optab a|
|00000770| 6e 64 5f 6f 70 74 61 62 | 3b 0d 6f 70 74 61 62 20 |nd_optab|;.optab |
|00000780| 61 6e 64 63 62 5f 6f 70 | 74 61 62 3b 0d 6f 70 74 |andcb_op|tab;.opt|
|00000790| 61 62 20 69 6f 72 5f 6f | 70 74 61 62 3b 0d 6f 70 |ab ior_o|ptab;.op|
|000007a0| 74 61 62 20 78 6f 72 5f | 6f 70 74 61 62 3b 0d 6f |tab xor_|optab;.o|
|000007b0| 70 74 61 62 20 61 73 68 | 6c 5f 6f 70 74 61 62 3b |ptab ash|l_optab;|
|000007c0| 0d 6f 70 74 61 62 20 6c | 73 68 72 5f 6f 70 74 61 |.optab l|shr_opta|
|000007d0| 62 3b 0d 6f 70 74 61 62 | 20 6c 73 68 6c 5f 6f 70 |b;.optab| lshl_op|
|000007e0| 74 61 62 3b 0d 6f 70 74 | 61 62 20 61 73 68 72 5f |tab;.opt|ab ashr_|
|000007f0| 6f 70 74 61 62 3b 0d 6f | 70 74 61 62 20 72 6f 74 |optab;.o|ptab rot|
|00000800| 6c 5f 6f 70 74 61 62 3b | 0d 6f 70 74 61 62 20 72 |l_optab;|.optab r|
|00000810| 6f 74 72 5f 6f 70 74 61 | 62 3b 0d 0d 6f 70 74 61 |otr_opta|b;..opta|
|00000820| 62 20 6d 6f 76 5f 6f 70 | 74 61 62 3b 0d 6f 70 74 |b mov_op|tab;.opt|
|00000830| 61 62 20 6d 6f 76 73 74 | 72 69 63 74 5f 6f 70 74 |ab movst|rict_opt|
|00000840| 61 62 3b 0d 0d 6f 70 74 | 61 62 20 6e 65 67 5f 6f |ab;..opt|ab neg_o|
|00000850| 70 74 61 62 3b 0d 6f 70 | 74 61 62 20 61 62 73 5f |ptab;.op|tab abs_|
|00000860| 6f 70 74 61 62 3b 0d 6f | 70 74 61 62 20 6f 6e 65 |optab;.o|ptab one|
|00000870| 5f 63 6d 70 6c 5f 6f 70 | 74 61 62 3b 0d 6f 70 74 |_cmpl_op|tab;.opt|
|00000880| 61 62 20 66 66 73 5f 6f | 70 74 61 62 3b 0d 23 69 |ab ffs_o|ptab;.#i|
|00000890| 66 64 65 66 20 41 50 50 | 4c 45 5f 43 0d 2f 2a 20 |fdef APP|LE_C./* |
|000008a0| 41 64 64 20 28 70 6f 73 | 73 69 62 6c 79 20 75 6e |Add (pos|sibly un|
|000008b0| 75 73 65 64 29 20 6f 70 | 74 61 62 6c 65 73 20 66 |used) op|tables f|
|000008c0| 6f 72 20 61 73 73 6f 72 | 74 65 64 20 65 6c 65 6d |or assor|ted elem|
|000008d0| 65 6e 74 61 72 79 20 66 | 75 6e 63 74 69 6f 6e 73 |entary f|unctions|
|000008e0| 2e 20 2a 2f 0d 6f 70 74 | 61 62 20 73 69 6e 5f 6f |. */.opt|ab sin_o|
|000008f0| 70 74 61 62 3b 0d 6f 70 | 74 61 62 20 63 6f 73 5f |ptab;.op|tab cos_|
|00000900| 6f 70 74 61 62 3b 0d 6f | 70 74 61 62 20 74 61 6e |optab;.o|ptab tan|
|00000910| 5f 6f 70 74 61 62 3b 0d | 6f 70 74 61 62 20 61 73 |_optab;.|optab as|
|00000920| 69 6e 5f 6f 70 74 61 62 | 3b 0d 6f 70 74 61 62 20 |in_optab|;.optab |
|00000930| 61 63 6f 73 5f 6f 70 74 | 61 62 3b 0d 6f 70 74 61 |acos_opt|ab;.opta|
|00000940| 62 20 61 74 61 6e 5f 6f | 70 74 61 62 3b 0d 6f 70 |b atan_o|ptab;.op|
|00000950| 74 61 62 20 73 69 6e 68 | 5f 6f 70 74 61 62 3b 0d |tab sinh|_optab;.|
|00000960| 6f 70 74 61 62 20 63 6f | 73 68 5f 6f 70 74 61 62 |optab co|sh_optab|
|00000970| 3b 0d 6f 70 74 61 62 20 | 74 61 6e 68 5f 6f 70 74 |;.optab |tanh_opt|
|00000980| 61 62 3b 0d 6f 70 74 61 | 62 20 65 78 70 5f 6f 70 |ab;.opta|b exp_op|
|00000990| 74 61 62 3b 0d 6f 70 74 | 61 62 20 6c 6f 67 5f 6f |tab;.opt|ab log_o|
|000009a0| 70 74 61 62 3b 0d 6f 70 | 74 61 62 20 6c 6f 67 31 |ptab;.op|tab log1|
|000009b0| 30 5f 6f 70 74 61 62 3b | 0d 6f 70 74 61 62 20 73 |0_optab;|.optab s|
|000009c0| 71 72 74 5f 6f 70 74 61 | 62 3b 0d 23 65 6e 64 69 |qrt_opta|b;.#endi|
|000009d0| 66 20 2f 2a 20 41 50 50 | 4c 45 5f 43 20 2a 2f 0d |f /* APP|LE_C */.|
|000009e0| 0d 6f 70 74 61 62 20 63 | 6d 70 5f 6f 70 74 61 62 |.optab c|mp_optab|
|000009f0| 3b 0d 6f 70 74 61 62 20 | 75 63 6d 70 5f 6f 70 74 |;.optab |ucmp_opt|
|00000a00| 61 62 3b 20 20 2f 2a 20 | 55 73 65 64 20 6f 6e 6c |ab; /* |Used onl|
|00000a10| 79 20 66 6f 72 20 6c 69 | 62 63 61 6c 6c 73 20 66 |y for li|bcalls f|
|00000a20| 6f 72 20 75 6e 73 69 67 | 6e 65 64 20 63 6f 6d 70 |or unsig|ned comp|
|00000a30| 61 72 69 73 6f 6e 73 2e | 20 20 2a 2f 0d 6f 70 74 |arisons.| */.opt|
|00000a40| 61 62 20 74 73 74 5f 6f | 70 74 61 62 3b 0d 0d 2f |ab tst_o|ptab;../|
|00000a50| 2a 20 49 6e 64 65 78 65 | 64 20 62 79 20 74 68 65 |* Indexe|d by the|
|00000a60| 20 72 74 78 2d 63 6f 64 | 65 20 66 6f 72 20 61 20 | rtx-cod|e for a |
|00000a70| 63 6f 6e 64 69 74 69 6f | 6e 61 6c 20 28 65 67 2e |conditio|nal (eg.|
|00000a80| 20 45 51 2c 20 4c 54 2c | 2e 2e 2e 29 0d 20 20 20 | EQ, LT,|...). |
|00000a90| 67 69 76 65 73 20 74 68 | 65 20 67 65 6e 5f 66 75 |gives th|e gen_fu|
|00000aa0| 6e 63 74 69 6f 6e 20 74 | 6f 20 6d 61 6b 65 20 61 |nction t|o make a|
|00000ab0| 20 62 72 61 6e 63 68 20 | 74 6f 20 74 65 73 74 20 | branch |to test |
|00000ac0| 74 68 61 74 20 63 6f 6e | 64 69 74 69 6f 6e 2e 20 |that con|dition. |
|00000ad0| 20 2a 2f 0d 0d 72 74 78 | 66 75 6e 20 62 63 63 5f | */..rtx|fun bcc_|
|00000ae0| 67 65 6e 5f 66 63 74 6e | 5b 4e 55 4d 5f 52 54 58 |gen_fctn|[NUM_RTX|
|00000af0| 5f 43 4f 44 45 5d 3b 0d | 0d 2f 2a 20 49 6e 64 65 |_CODE];.|./* Inde|
|00000b00| 78 65 64 20 62 79 20 74 | 68 65 20 72 74 78 2d 63 |xed by t|he rtx-c|
|00000b10| 6f 64 65 20 66 6f 72 20 | 61 20 63 6f 6e 64 69 74 |ode for |a condit|
|00000b20| 69 6f 6e 61 6c 20 28 65 | 67 2e 20 45 51 2c 20 4c |ional (e|g. EQ, L|
|00000b30| 54 2c 2e 2e 2e 29 0d 20 | 20 20 67 69 76 65 73 20 |T,...). | gives |
|00000b40| 74 68 65 20 67 65 6e 5f | 66 75 6e 63 74 69 6f 6e |the gen_|function|
|00000b50| 20 74 6f 20 6d 61 6b 65 | 20 61 20 73 74 6f 72 65 | to make| a store|
|00000b60| 2d 63 6f 6e 64 69 74 69 | 6f 6e 20 69 6e 73 6e 0d |-conditi|on insn.|
|00000b70| 20 20 20 74 6f 20 74 65 | 73 74 20 74 68 61 74 20 | to te|st that |
|00000b80| 63 6f 6e 64 69 74 69 6f | 6e 2e 20 20 2a 2f 0d 0d |conditio|n. */..|
|00000b90| 72 74 78 66 75 6e 20 73 | 65 74 63 63 5f 67 65 6e |rtxfun s|etcc_gen|
|00000ba0| 5f 66 63 74 6e 5b 4e 55 | 4d 5f 52 54 58 5f 43 4f |_fctn[NU|M_RTX_CO|
|00000bb0| 44 45 5d 3b 0d 0c 0d 2f | 2a 20 47 65 6e 65 72 61 |DE];.../|* Genera|
|00000bc0| 74 65 20 63 6f 64 65 20 | 74 6f 20 70 65 72 66 6f |te code |to perfo|
|00000bd0| 72 6d 20 61 6e 20 6f 70 | 65 72 61 74 69 6f 6e 20 |rm an op|eration |
|00000be0| 73 70 65 63 69 66 69 65 | 64 20 62 79 20 42 49 4e |specifie|d by BIN|
|00000bf0| 4f 50 54 41 42 0d 20 20 | 20 6f 6e 20 6f 70 65 72 |OPTAB. | on oper|
|00000c00| 61 6e 64 73 20 4f 50 30 | 20 61 6e 64 20 4f 50 31 |ands OP0| and OP1|
|00000c10| 2c 20 77 69 74 68 20 72 | 65 73 75 6c 74 20 68 61 |, with r|esult ha|
|00000c20| 76 69 6e 67 20 6d 61 63 | 68 69 6e 65 2d 6d 6f 64 |ving mac|hine-mod|
|00000c30| 65 20 4d 4f 44 45 2e 0d | 0d 20 20 20 55 4e 53 49 |e MODE..|. UNSI|
|00000c40| 47 4e 45 44 50 20 69 73 | 20 66 6f 72 20 74 68 65 |GNEDP is| for the|
|00000c50| 20 63 61 73 65 20 77 68 | 65 72 65 20 77 65 20 68 | case wh|ere we h|
|00000c60| 61 76 65 20 74 6f 20 77 | 69 64 65 6e 20 74 68 65 |ave to w|iden the|
|00000c70| 20 6f 70 65 72 61 6e 64 | 73 0d 20 20 20 74 6f 20 | operand|s. to |
|00000c80| 70 65 72 66 6f 72 6d 20 | 74 68 65 20 6f 70 65 72 |perform |the oper|
|00000c90| 61 74 69 6f 6e 2e 20 20 | 49 74 20 73 61 79 73 20 |ation. |It says |
|00000ca0| 74 6f 20 75 73 65 20 7a | 65 72 6f 2d 65 78 74 65 |to use z|ero-exte|
|00000cb0| 6e 73 69 6f 6e 2e 0d 0d | 20 20 20 49 66 20 54 41 |nsion...| If TA|
|00000cc0| 52 47 45 54 20 69 73 20 | 6e 6f 6e 7a 65 72 6f 2c |RGET is |nonzero,|
|00000cd0| 20 74 68 65 20 76 61 6c | 75 65 0d 20 20 20 69 73 | the val|ue. is|
|00000ce0| 20 67 65 6e 65 72 61 74 | 65 64 20 74 68 65 72 65 | generat|ed there|
|00000cf0| 2c 20 69 66 20 69 74 20 | 69 73 20 63 6f 6e 76 65 |, if it |is conve|
|00000d00| 6e 69 65 6e 74 20 74 6f | 20 64 6f 20 73 6f 2e 0d |nient to| do so..|
|00000d10| 20 20 20 49 6e 20 61 6c | 6c 20 63 61 73 65 73 20 | In al|l cases |
|00000d20| 61 6e 20 72 74 78 20 69 | 73 20 72 65 74 75 72 6e |an rtx i|s return|
|00000d30| 65 64 20 66 6f 72 20 74 | 68 65 20 6c 6f 63 75 73 |ed for t|he locus|
|00000d40| 20 6f 66 20 74 68 65 20 | 76 61 6c 75 65 3b 0d 20 | of the |value;. |
|00000d50| 20 20 74 68 69 73 20 6d | 61 79 20 6f 72 20 6d 61 | this m|ay or ma|
|00000d60| 79 20 6e 6f 74 20 62 65 | 20 54 41 52 47 45 54 2e |y not be| TARGET.|
|00000d70| 20 20 2a 2f 0d 0d 72 74 | 78 0d 65 78 70 61 6e 64 | */..rt|x.expand|
|00000d80| 5f 62 69 6e 6f 70 20 28 | 6d 6f 64 65 2c 20 62 69 |_binop (|mode, bi|
|00000d90| 6e 6f 70 74 61 62 2c 20 | 6f 70 30 2c 20 6f 70 31 |noptab, |op0, op1|
|00000da0| 2c 20 74 61 72 67 65 74 | 2c 20 75 6e 73 69 67 6e |, target|, unsign|
|00000db0| 65 64 70 2c 20 6d 65 74 | 68 6f 64 73 29 0d 20 20 |edp, met|hods). |
|00000dc0| 20 20 20 65 6e 75 6d 20 | 6d 61 63 68 69 6e 65 5f | enum |machine_|
|00000dd0| 6d 6f 64 65 20 6d 6f 64 | 65 3b 0d 20 20 20 20 20 |mode mod|e;. |
|00000de0| 6f 70 74 61 62 20 62 69 | 6e 6f 70 74 61 62 3b 0d |optab bi|noptab;.|
|00000df0| 20 20 20 20 20 72 74 78 | 20 6f 70 30 2c 20 6f 70 | rtx| op0, op|
|00000e00| 31 3b 0d 20 20 20 20 20 | 72 74 78 20 74 61 72 67 |1;. |rtx targ|
|00000e10| 65 74 3b 0d 20 20 20 20 | 20 69 6e 74 20 75 6e 73 |et;. | int uns|
|00000e20| 69 67 6e 65 64 70 3b 0d | 20 20 20 20 20 65 6e 75 |ignedp;.| enu|
|00000e30| 6d 20 6f 70 74 61 62 5f | 6d 65 74 68 6f 64 73 20 |m optab_|methods |
|00000e40| 6d 65 74 68 6f 64 73 3b | 0d 7b 0d 20 20 65 6e 75 |methods;|.{. enu|
|00000e50| 6d 20 6d 6f 64 65 5f 63 | 6c 61 73 73 20 63 6c 61 |m mode_c|lass cla|
|00000e60| 73 73 3b 0d 20 20 65 6e | 75 6d 20 6d 61 63 68 69 |ss;. en|um machi|
|00000e70| 6e 65 5f 6d 6f 64 65 20 | 77 69 64 65 72 5f 6d 6f |ne_mode |wider_mo|
|00000e80| 64 65 3b 0d 20 20 72 65 | 67 69 73 74 65 72 20 72 |de;. re|gister r|
|00000e90| 74 78 20 74 65 6d 70 3b | 0d 20 20 72 74 78 20 6c |tx temp;|. rtx l|
|00000ea0| 61 73 74 3b 0d 0d 20 20 | 63 6c 61 73 73 20 3d 20 |ast;.. |class = |
|00000eb0| 47 45 54 5f 4d 4f 44 45 | 5f 43 4c 41 53 53 20 28 |GET_MODE|_CLASS (|
|00000ec0| 6d 6f 64 65 29 3b 0d 0d | 20 20 6f 70 30 20 3d 20 |mode);..| op0 = |
|00000ed0| 70 72 6f 74 65 63 74 5f | 66 72 6f 6d 5f 71 75 65 |protect_|from_que|
|00000ee0| 75 65 20 28 6f 70 30 2c | 20 30 29 3b 0d 20 20 6f |ue (op0,| 0);. o|
|00000ef0| 70 31 20 3d 20 70 72 6f | 74 65 63 74 5f 66 72 6f |p1 = pro|tect_fro|
|00000f00| 6d 5f 71 75 65 75 65 20 | 28 6f 70 31 2c 20 30 29 |m_queue |(op1, 0)|
|00000f10| 3b 0d 20 20 69 66 20 28 | 74 61 72 67 65 74 29 0d |;. if (|target).|
|00000f20| 20 20 20 20 74 61 72 67 | 65 74 20 3d 20 70 72 6f | targ|et = pro|
|00000f30| 74 65 63 74 5f 66 72 6f | 6d 5f 71 75 65 75 65 20 |tect_fro|m_queue |
|00000f40| 28 74 61 72 67 65 74 2c | 20 31 29 3b 0d 0d 23 69 |(target,| 1);..#i|
|00000f50| 66 20 30 0d 20 20 2f 2a | 20 57 65 20 6d 61 79 20 |f 0. /*| We may |
|00000f60| 67 65 74 20 62 65 74 74 | 65 72 20 63 6f 64 65 20 |get bett|er code |
|00000f70| 62 79 20 67 65 6e 65 72 | 61 74 69 6e 67 20 74 68 |by gener|ating th|
|00000f80| 65 20 72 65 73 75 6c 74 | 20 69 6e 20 61 20 72 65 |e result| in a re|
|00000f90| 67 69 73 74 65 72 0d 20 | 20 20 20 20 77 68 65 6e |gister. | when|
|00000fa0| 20 74 68 65 20 74 61 72 | 67 65 74 20 69 73 20 6e | the tar|get is n|
|00000fb0| 6f 74 20 6f 6e 65 20 6f | 66 20 74 68 65 20 6f 70 |ot one o|f the op|
|00000fc0| 65 72 61 6e 64 73 2e 20 | 20 2a 2f 0d 20 20 69 66 |erands. | */. if|
|00000fd0| 20 28 74 61 72 67 65 74 | 20 26 26 20 21 20 72 74 | (target| && ! rt|
|00000fe0| 78 5f 65 71 75 61 6c 5f | 70 20 28 74 61 72 67 65 |x_equal_|p (targe|
|00000ff0| 74 2c 20 6f 70 31 29 20 | 26 26 20 21 20 72 74 78 |t, op1) |&& ! rtx|
|00001000| 5f 65 71 75 61 6c 5f 70 | 20 28 74 61 72 67 65 74 |_equal_p| (target|
|00001010| 2c 20 6f 70 30 29 29 0d | 20 20 20 20 74 61 72 67 |, op0)).| targ|
|00001020| 65 74 5f 69 73 5f 6e 6f | 74 5f 61 6e 5f 6f 70 65 |et_is_no|t_an_ope|
|00001030| 72 61 6e 64 20 3d 20 31 | 3b 0d 23 65 6e 64 69 66 |rand = 1|;.#endif|
|00001040| 0d 0d 20 20 69 66 20 28 | 66 6c 61 67 5f 66 6f 72 |.. if (|flag_for|
|00001050| 63 65 5f 6d 65 6d 29 0d | 20 20 20 20 7b 0d 20 20 |ce_mem).| {. |
|00001060| 20 20 20 20 6f 70 30 20 | 3d 20 66 6f 72 63 65 5f | op0 |= force_|
|00001070| 6e 6f 74 5f 6d 65 6d 20 | 28 6f 70 30 29 3b 0d 20 |not_mem |(op0);. |
|00001080| 20 20 20 20 20 6f 70 31 | 20 3d 20 66 6f 72 63 65 | op1| = force|
|00001090| 5f 6e 6f 74 5f 6d 65 6d | 20 28 6f 70 31 29 3b 0d |_not_mem| (op1);.|
|000010a0| 20 20 20 20 7d 0d 0d 20 | 20 2f 2a 20 52 65 63 6f | }.. | /* Reco|
|000010b0| 72 64 20 77 68 65 72 65 | 20 74 6f 20 64 65 6c 65 |rd where| to dele|
|000010c0| 74 65 20 62 61 63 6b 20 | 74 6f 20 69 66 20 77 65 |te back |to if we|
|000010d0| 20 62 61 63 6b 74 72 61 | 63 6b 2e 20 20 2a 2f 0d | backtra|ck. */.|
|000010e0| 20 20 6c 61 73 74 20 3d | 20 67 65 74 5f 6c 61 73 | last =| get_las|
|000010f0| 74 5f 69 6e 73 6e 20 28 | 29 3b 0d 0d 20 20 2f 2a |t_insn (|);.. /*|
|00001100| 20 49 66 20 6f 70 65 72 | 61 74 69 6f 6e 20 69 73 | If oper|ation is|
|00001110| 20 63 6f 6d 6d 75 74 61 | 74 69 76 65 2c 0d 20 20 | commuta|tive,. |
|00001120| 20 20 20 74 72 79 20 74 | 6f 20 6d 61 6b 65 20 74 | try t|o make t|
|00001130| 68 65 20 66 69 72 73 74 | 20 6f 70 65 72 61 6e 64 |he first| operand|
|00001140| 20 61 20 72 65 67 69 73 | 74 65 72 2e 0d 20 20 20 | a regis|ter.. |
|00001150| 20 20 45 76 65 6e 20 62 | 65 74 74 65 72 2c 20 74 | Even b|etter, t|
|00001160| 72 79 20 74 6f 20 6d 61 | 6b 65 20 69 74 20 74 68 |ry to ma|ke it th|
|00001170| 65 20 73 61 6d 65 20 61 | 73 20 74 68 65 20 74 61 |e same a|s the ta|
|00001180| 72 67 65 74 2e 0d 20 20 | 20 20 20 41 6c 73 6f 20 |rget.. | Also |
|00001190| 74 72 79 20 74 6f 20 6d | 61 6b 65 20 74 68 65 20 |try to m|ake the |
|000011a0| 6c 61 73 74 20 6f 70 65 | 72 61 6e 64 20 61 20 63 |last ope|rand a c|
|000011b0| 6f 6e 73 74 61 6e 74 2e | 20 20 2a 2f 0d 20 20 69 |onstant.| */. i|
|000011c0| 66 20 28 62 69 6e 6f 70 | 74 61 62 20 3d 3d 20 61 |f (binop|tab == a|
|000011d0| 64 64 5f 6f 70 74 61 62 | 0d 20 20 20 20 20 20 7c |dd_optab|. ||
|000011e0| 7c 20 62 69 6e 6f 70 74 | 61 62 20 3d 3d 20 61 6e || binopt|ab == an|
|000011f0| 64 5f 6f 70 74 61 62 0d | 20 20 20 20 20 20 7c 7c |d_optab.| |||
|00001200| 20 62 69 6e 6f 70 74 61 | 62 20 3d 3d 20 69 6f 72 | binopta|b == ior|
|00001210| 5f 6f 70 74 61 62 0d 20 | 20 20 20 20 20 7c 7c 20 |_optab. | || |
|00001220| 62 69 6e 6f 70 74 61 62 | 20 3d 3d 20 78 6f 72 5f |binoptab| == xor_|
|00001230| 6f 70 74 61 62 0d 20 20 | 20 20 20 20 7c 7c 20 62 |optab. | || b|
|00001240| 69 6e 6f 70 74 61 62 20 | 3d 3d 20 73 6d 75 6c 5f |inoptab |== smul_|
|00001250| 6f 70 74 61 62 0d 20 20 | 20 20 20 20 7c 7c 20 62 |optab. | || b|
|00001260| 69 6e 6f 70 74 61 62 20 | 3d 3d 20 75 6d 75 6c 5f |inoptab |== umul_|
|00001270| 6f 70 74 61 62 0d 20 20 | 20 20 20 20 7c 7c 20 62 |optab. | || b|
|00001280| 69 6e 6f 70 74 61 62 20 | 3d 3d 20 73 6d 75 6c 5f |inoptab |== smul_|
|00001290| 77 69 64 65 6e 5f 6f 70 | 74 61 62 0d 20 20 20 20 |widen_op|tab. |
|000012a0| 20 20 7c 7c 20 62 69 6e | 6f 70 74 61 62 20 3d 3d | || bin|optab ==|
|000012b0| 20 75 6d 75 6c 5f 77 69 | 64 65 6e 5f 6f 70 74 61 | umul_wi|den_opta|
|000012c0| 62 29 0d 20 20 20 20 7b | 0d 20 20 20 20 20 20 69 |b). {|. i|
|000012d0| 66 20 28 28 28 74 61 72 | 67 65 74 20 3d 3d 20 30 |f (((tar|get == 0|
|000012e0| 20 7c 7c 20 47 45 54 5f | 43 4f 44 45 20 28 74 61 | || GET_|CODE (ta|
|000012f0| 72 67 65 74 29 20 3d 3d | 20 52 45 47 29 0d 09 20 |rget) ==| REG).. |
|00001300| 20 20 3f 20 28 28 47 45 | 54 5f 43 4f 44 45 20 28 | ? ((GE|T_CODE (|
|00001310| 6f 70 31 29 20 3d 3d 20 | 52 45 47 0d 09 20 20 20 |op1) == |REG.. |
|00001320| 20 20 20 20 26 26 20 47 | 45 54 5f 43 4f 44 45 20 | && G|ET_CODE |
|00001330| 28 6f 70 30 29 20 21 3d | 20 52 45 47 29 0d 09 20 |(op0) !=| REG).. |
|00001340| 20 20 20 20 20 7c 7c 20 | 74 61 72 67 65 74 20 3d | || |target =|
|00001350| 3d 20 6f 70 31 29 0d 09 | 20 20 20 3a 20 72 74 78 |= op1)..| : rtx|
|00001360| 5f 65 71 75 61 6c 5f 70 | 20 28 6f 70 31 2c 20 74 |_equal_p| (op1, t|
|00001370| 61 72 67 65 74 29 29 0d | 09 20 20 7c 7c 0d 09 20 |arget)).|. ||.. |
|00001380| 20 47 45 54 5f 43 4f 44 | 45 20 28 6f 70 30 29 20 | GET_COD|E (op0) |
|00001390| 3d 3d 20 43 4f 4e 53 54 | 5f 49 4e 54 29 0d 09 7b |== CONST|_INT)..{|
|000013a0| 0d 09 20 20 74 65 6d 70 | 20 3d 20 6f 70 31 3b 0d |.. temp| = op1;.|
|000013b0| 09 20 20 6f 70 31 20 3d | 20 6f 70 30 3b 0d 09 20 |. op1 =| op0;.. |
|000013c0| 20 6f 70 30 20 3d 20 74 | 65 6d 70 3b 0d 09 7d 0d | op0 = t|emp;..}.|
|000013d0| 20 20 20 20 7d 0d 0d 20 | 20 2f 2a 20 49 66 20 77 | }.. | /* If w|
|000013e0| 65 20 63 61 6e 20 64 6f | 20 69 74 20 77 69 74 68 |e can do| it with|
|000013f0| 20 61 20 74 68 72 65 65 | 2d 6f 70 65 72 61 6e 64 | a three|-operand|
|00001400| 20 69 6e 73 6e 2c 20 64 | 6f 20 73 6f 2e 20 20 2a | insn, d|o so. *|
|00001410| 2f 0d 0d 20 20 69 66 20 | 28 6d 65 74 68 6f 64 73 |/.. if |(methods|
|00001420| 20 21 3d 20 4f 50 54 41 | 42 5f 4d 55 53 54 5f 57 | != OPTA|B_MUST_W|
|00001430| 49 44 45 4e 0d 20 20 20 | 20 20 20 26 26 20 62 69 |IDEN. | && bi|
|00001440| 6e 6f 70 74 61 62 2d 3e | 68 61 6e 64 6c 65 72 73 |noptab->|handlers|
|00001450| 5b 28 69 6e 74 29 20 6d | 6f 64 65 5d 2e 69 6e 73 |[(int) m|ode].ins|
|00001460| 6e 5f 63 6f 64 65 20 21 | 3d 20 43 4f 44 45 5f 46 |n_code !|= CODE_F|
|00001470| 4f 52 5f 6e 6f 74 68 69 | 6e 67 29 0d 20 20 20 20 |OR_nothi|ng). |
|00001480| 7b 0d 20 20 20 20 20 20 | 69 6e 74 20 69 63 6f 64 |{. |int icod|
|00001490| 65 20 3d 20 28 69 6e 74 | 29 20 62 69 6e 6f 70 74 |e = (int|) binopt|
|000014a0| 61 62 2d 3e 68 61 6e 64 | 6c 65 72 73 5b 28 69 6e |ab->hand|lers[(in|
|000014b0| 74 29 20 6d 6f 64 65 5d | 2e 69 6e 73 6e 5f 63 6f |t) mode]|.insn_co|
|000014c0| 64 65 3b 0d 20 20 20 20 | 20 20 65 6e 75 6d 20 6d |de;. | enum m|
|000014d0| 61 63 68 69 6e 65 5f 6d | 6f 64 65 20 6d 6f 64 65 |achine_m|ode mode|
|000014e0| 30 20 3d 20 69 6e 73 6e | 5f 6f 70 65 72 61 6e 64 |0 = insn|_operand|
|000014f0| 5f 6d 6f 64 65 5b 69 63 | 6f 64 65 5d 5b 31 5d 3b |_mode[ic|ode][1];|
|00001500| 0d 20 20 20 20 20 20 65 | 6e 75 6d 20 6d 61 63 68 |. e|num mach|
|00001510| 69 6e 65 5f 6d 6f 64 65 | 20 6d 6f 64 65 31 20 3d |ine_mode| mode1 =|
|00001520| 20 69 6e 73 6e 5f 6f 70 | 65 72 61 6e 64 5f 6d 6f | insn_op|erand_mo|
|00001530| 64 65 5b 69 63 6f 64 65 | 5d 5b 32 5d 3b 0d 20 20 |de[icode|][2];. |
|00001540| 20 20 20 20 72 74 78 20 | 70 61 74 3b 0d 20 20 20 | rtx |pat;. |
|00001550| 20 20 20 72 74 78 20 78 | 6f 70 30 20 3d 20 6f 70 | rtx x|op0 = op|
|00001560| 30 2c 20 78 6f 70 31 20 | 3d 20 6f 70 31 3b 0d 0d |0, xop1 |= op1;..|
|00001570| 20 20 20 20 20 20 69 66 | 20 28 74 61 72 67 65 74 | if| (target|
|00001580| 29 0d 09 74 65 6d 70 20 | 3d 20 74 61 72 67 65 74 |)..temp |= target|
|00001590| 3b 0d 20 20 20 20 20 20 | 65 6c 73 65 0d 09 74 65 |;. |else..te|
|000015a0| 6d 70 20 3d 20 67 65 6e | 5f 72 65 67 5f 72 74 78 |mp = gen|_reg_rtx|
|000015b0| 20 28 6d 6f 64 65 29 3b | 0d 0d 20 20 20 20 20 20 | (mode);|.. |
|000015c0| 2f 2a 20 49 6e 20 63 61 | 73 65 20 74 68 65 20 69 |/* In ca|se the i|
|000015d0| 6e 73 6e 20 77 61 6e 74 | 73 20 69 6e 70 75 74 20 |nsn want|s input |
|000015e0| 6f 70 65 72 61 6e 64 73 | 20 69 6e 20 6d 6f 64 65 |operands| in mode|
|000015f0| 73 20 64 69 66 66 65 72 | 65 6e 74 20 66 72 6f 6d |s differ|ent from|
|00001600| 0d 09 20 74 68 65 20 72 | 65 73 75 6c 74 2c 20 63 |.. the r|esult, c|
|00001610| 6f 6e 76 65 72 74 20 74 | 68 65 20 6f 70 65 72 61 |onvert t|he opera|
|00001620| 6e 64 73 2e 20 20 2a 2f | 0d 0d 20 20 20 20 20 20 |nds. */|.. |
|00001630| 69 66 20 28 47 45 54 5f | 4d 4f 44 45 20 28 6f 70 |if (GET_|MODE (op|
|00001640| 30 29 20 21 3d 20 56 4f | 49 44 6d 6f 64 65 0d 09 |0) != VO|IDmode..|
|00001650| 20 20 26 26 20 47 45 54 | 5f 4d 4f 44 45 20 28 6f | && GET|_MODE (o|
|00001660| 70 30 29 20 21 3d 20 6d | 6f 64 65 30 29 0d 09 78 |p0) != m|ode0)..x|
|00001670| 6f 70 30 20 3d 20 63 6f | 6e 76 65 72 74 5f 74 6f |op0 = co|nvert_to|
|00001680| 5f 6d 6f 64 65 20 28 6d | 6f 64 65 30 2c 20 78 6f |_mode (m|ode0, xo|
|00001690| 70 30 2c 20 75 6e 73 69 | 67 6e 65 64 70 29 3b 0d |p0, unsi|gnedp);.|
|000016a0| 0d 20 20 20 20 20 20 69 | 66 20 28 47 45 54 5f 4d |. i|f (GET_M|
|000016b0| 4f 44 45 20 28 78 6f 70 | 31 29 20 21 3d 20 56 4f |ODE (xop|1) != VO|
|000016c0| 49 44 6d 6f 64 65 0d 09 | 20 20 26 26 20 47 45 54 |IDmode..| && GET|
|000016d0| 5f 4d 4f 44 45 20 28 78 | 6f 70 31 29 20 21 3d 20 |_MODE (x|op1) != |
|000016e0| 6d 6f 64 65 31 29 0d 09 | 78 6f 70 31 20 3d 20 63 |mode1)..|xop1 = c|
|000016f0| 6f 6e 76 65 72 74 5f 74 | 6f 5f 6d 6f 64 65 20 28 |onvert_t|o_mode (|
|00001700| 6d 6f 64 65 31 2c 20 78 | 6f 70 31 2c 20 75 6e 73 |mode1, x|op1, uns|
|00001710| 69 67 6e 65 64 70 29 3b | 0d 0d 20 20 20 20 20 20 |ignedp);|.. |
|00001720| 2f 2a 20 4e 6f 77 2c 20 | 69 66 20 69 6e 73 6e 20 |/* Now, |if insn |
|00001730| 72 65 71 75 69 72 65 73 | 20 72 65 67 69 73 74 65 |requires| registe|
|00001740| 72 20 6f 70 65 72 61 6e | 64 73 2c 20 70 75 74 20 |r operan|ds, put |
|00001750| 6f 70 65 72 61 6e 64 73 | 20 69 6e 74 6f 20 72 65 |operands| into re|
|00001760| 67 73 2e 20 20 2a 2f 0d | 0d 20 20 20 20 20 20 69 |gs. */.|. i|
|00001770| 66 20 28 21 20 28 2a 69 | 6e 73 6e 5f 6f 70 65 72 |f (! (*i|nsn_oper|
|00001780| 61 6e 64 5f 70 72 65 64 | 69 63 61 74 65 5b 69 63 |and_pred|icate[ic|
|00001790| 6f 64 65 5d 5b 31 5d 29 | 20 28 78 6f 70 30 2c 20 |ode][1])| (xop0, |
|000017a0| 6d 6f 64 65 30 29 29 0d | 09 78 6f 70 30 20 3d 20 |mode0)).|.xop0 = |
|000017b0| 66 6f 72 63 65 5f 72 65 | 67 20 28 6d 6f 64 65 30 |force_re|g (mode0|
|000017c0| 2c 20 78 6f 70 30 29 3b | 0d 0d 20 20 20 20 20 20 |, xop0);|.. |
|000017d0| 69 66 20 28 21 20 28 2a | 69 6e 73 6e 5f 6f 70 65 |if (! (*|insn_ope|
|000017e0| 72 61 6e 64 5f 70 72 65 | 64 69 63 61 74 65 5b 69 |rand_pre|dicate[i|
|000017f0| 63 6f 64 65 5d 5b 32 5d | 29 20 28 78 6f 70 31 2c |code][2]|) (xop1,|
|00001800| 20 6d 6f 64 65 31 29 29 | 0d 09 78 6f 70 31 20 3d | mode1))|..xop1 =|
|00001810| 20 66 6f 72 63 65 5f 72 | 65 67 20 28 6d 6f 64 65 | force_r|eg (mode|
|00001820| 31 2c 20 78 6f 70 31 29 | 3b 0d 0d 20 20 20 20 20 |1, xop1)|;.. |
|00001830| 20 69 66 20 28 21 20 28 | 2a 69 6e 73 6e 5f 6f 70 | if (! (|*insn_op|
|00001840| 65 72 61 6e 64 5f 70 72 | 65 64 69 63 61 74 65 5b |erand_pr|edicate[|
|00001850| 69 63 6f 64 65 5d 5b 30 | 5d 29 20 28 74 65 6d 70 |icode][0|]) (temp|
|00001860| 2c 20 6d 6f 64 65 29 29 | 0d 09 74 65 6d 70 20 3d |, mode))|..temp =|
|00001870| 20 67 65 6e 5f 72 65 67 | 5f 72 74 78 20 28 6d 6f | gen_reg|_rtx (mo|
|00001880| 64 65 29 3b 0d 0d 20 20 | 20 20 20 20 70 61 74 20 |de);.. | pat |
|00001890| 3d 20 47 45 4e 5f 46 43 | 4e 20 28 69 63 6f 64 65 |= GEN_FC|N (icode|
|000018a0| 29 20 28 74 65 6d 70 2c | 20 78 6f 70 30 2c 20 78 |) (temp,| xop0, x|
|000018b0| 6f 70 31 29 3b 0d 20 20 | 20 20 20 20 69 66 20 28 |op1);. | if (|
|000018c0| 70 61 74 29 0d 09 7b 0d | 09 20 20 65 6d 69 74 5f |pat)..{.|. emit_|
|000018d0| 69 6e 73 6e 20 28 70 61 | 74 29 3b 0d 09 20 20 72 |insn (pa|t);.. r|
|000018e0| 65 74 75 72 6e 20 74 65 | 6d 70 3b 0d 09 7d 0d 20 |eturn te|mp;..}. |
|000018f0| 20 20 20 20 20 65 6c 73 | 65 0d 09 64 65 6c 65 74 | els|e..delet|
|00001900| 65 5f 69 6e 73 6e 73 5f | 73 69 6e 63 65 20 28 6c |e_insns_|since (l|
|00001910| 61 73 74 29 3b 0d 20 20 | 20 20 7d 0d 0d 20 20 2f |ast);. | }.. /|
|00001920| 2a 20 49 74 20 63 61 6e | 27 74 20 62 65 20 6f 70 |* It can|'t be op|
|00001930| 65 6e 2d 63 6f 64 65 64 | 20 69 6e 20 74 68 69 73 |en-coded| in this|
|00001940| 20 6d 6f 64 65 2e 0d 20 | 20 20 20 20 55 73 65 20 | mode.. | Use |
|00001950| 61 20 6c 69 62 72 61 72 | 79 20 63 61 6c 6c 20 69 |a librar|y call i|
|00001960| 66 20 6f 6e 65 20 69 73 | 20 61 76 61 69 6c 61 62 |f one is| availab|
|00001970| 6c 65 20 61 6e 64 20 63 | 61 6c 6c 65 72 20 73 61 |le and c|aller sa|
|00001980| 79 73 20 74 68 61 74 27 | 73 20 6f 6b 2e 20 20 2a |ys that'|s ok. *|
|00001990| 2f 0d 0d 20 20 69 66 20 | 28 62 69 6e 6f 70 74 61 |/.. if |(binopta|
|000019a0| 62 2d 3e 68 61 6e 64 6c | 65 72 73 5b 28 69 6e 74 |b->handl|ers[(int|
|000019b0| 29 20 6d 6f 64 65 5d 2e | 6c 69 62 5f 63 61 6c 6c |) mode].|lib_call|
|000019c0| 0d 20 20 20 20 20 20 26 | 26 20 28 6d 65 74 68 6f |. &|& (metho|
|000019d0| 64 73 20 3d 3d 20 4f 50 | 54 41 42 5f 4c 49 42 20 |ds == OP|TAB_LIB |
|000019e0| 7c 7c 20 6d 65 74 68 6f | 64 73 20 3d 3d 20 4f 50 ||| metho|ds == OP|
|000019f0| 54 41 42 5f 4c 49 42 5f | 57 49 44 45 4e 29 29 0d |TAB_LIB_|WIDEN)).|
|00001a00| 20 20 20 20 7b 0d 20 20 | 20 20 20 20 72 74 78 20 | {. | rtx |
|00001a10| 69 6e 73 6e 5f 62 65 66 | 6f 72 65 2c 20 69 6e 73 |insn_bef|ore, ins|
|00001a20| 6e 5f 66 69 72 73 74 2c | 20 69 6e 73 6e 5f 6c 61 |n_first,| insn_la|
|00001a30| 73 74 3b 0d 20 20 20 20 | 20 20 72 74 78 20 66 75 |st;. | rtx fu|
|00001a40| 6e 65 78 70 20 3d 20 67 | 65 6e 5f 72 74 78 20 28 |nexp = g|en_rtx (|
|00001a50| 53 59 4d 42 4f 4c 5f 52 | 45 46 2c 20 50 6d 6f 64 |SYMBOL_R|EF, Pmod|
|00001a60| 65 2c 0d 09 09 09 20 20 | 20 20 62 69 6e 6f 70 74 |e,.... | binopt|
|00001a70| 61 62 2d 3e 68 61 6e 64 | 6c 65 72 73 5b 28 69 6e |ab->hand|lers[(in|
|00001a80| 74 29 20 6d 6f 64 65 5d | 2e 6c 69 62 5f 63 61 6c |t) mode]|.lib_cal|
|00001a90| 6c 29 3b 0d 0d 20 20 20 | 20 20 20 2f 2a 20 50 61 |l);.. | /* Pa|
|00001aa0| 73 73 20 74 68 65 20 61 | 64 64 72 65 73 73 20 74 |ss the a|ddress t|
|00001ab0| 68 72 6f 75 67 68 20 61 | 20 70 73 65 75 64 6f 72 |hrough a| pseudor|
|00001ac0| 65 67 2c 20 69 66 20 64 | 65 73 69 72 65 64 2c 0d |eg, if d|esired,.|
|00001ad0| 09 20 62 65 66 6f 72 65 | 20 74 68 65 20 22 62 65 |. before| the "be|
|00001ae0| 67 69 6e 6e 69 6e 67 22 | 20 6f 66 20 74 68 65 20 |ginning"| of the |
|00001af0| 6c 69 62 72 61 72 79 20 | 63 61 6c 6c 2e 0d 09 20 |library |call... |
|00001b00| 53 6f 20 74 68 69 73 20 | 69 6e 73 6e 20 69 73 6e |So this |insn isn|
|00001b10| 27 74 20 22 70 61 72 74 | 20 6f 66 22 20 74 68 65 |'t "part| of" the|
|00001b20| 20 6c 69 62 72 61 72 79 | 20 63 61 6c 6c 2c 20 69 | library| call, i|
|00001b30| 6e 20 63 61 73 65 20 74 | 68 61 74 0d 09 20 69 73 |n case t|hat.. is|
|00001b40| 20 64 65 6c 65 74 65 64 | 2c 20 6f 72 20 63 73 65 | deleted|, or cse|
|00001b50| 27 64 2e 20 20 2a 2f 0d | 23 69 66 6e 64 65 66 20 |'d. */.|#ifndef |
|00001b60| 4e 4f 5f 46 55 4e 43 54 | 49 4f 4e 5f 43 53 45 0d |NO_FUNCT|ION_CSE.|
|00001b70| 20 20 20 20 20 20 69 66 | 20 28 21 20 66 6c 61 67 | if| (! flag|
|00001b80| 5f 6e 6f 5f 66 75 6e 63 | 74 69 6f 6e 5f 63 73 65 |_no_func|tion_cse|
|00001b90| 29 0d 09 66 75 6e 65 78 | 70 20 3d 20 63 6f 70 79 |)..funex|p = copy|
|00001ba0| 5f 74 6f 5f 6d 6f 64 65 | 5f 72 65 67 20 28 50 6d |_to_mode|_reg (Pm|
|00001bb0| 6f 64 65 2c 20 66 75 6e | 65 78 70 29 3b 0d 23 65 |ode, fun|exp);.#e|
|00001bc0| 6e 64 69 66 0d 0d 20 20 | 20 20 20 20 69 6e 73 6e |ndif.. | insn|
|00001bd0| 5f 62 65 66 6f 72 65 20 | 3d 20 67 65 74 5f 6c 61 |_before |= get_la|
|00001be0| 73 74 5f 69 6e 73 6e 20 | 28 29 3b 0d 20 20 20 20 |st_insn |();. |
|00001bf0| 20 20 69 66 20 28 69 6e | 73 6e 5f 62 65 66 6f 72 | if (in|sn_befor|
|00001c00| 65 20 3d 3d 20 30 29 0d | 09 61 62 6f 72 74 20 28 |e == 0).|.abort (|
|00001c10| 29 3b 0d 0d 20 20 20 20 | 20 20 2f 2a 20 43 61 6e |);.. | /* Can|
|00001c20| 6e 6f 74 20 70 61 73 73 | 20 46 55 4e 45 58 50 20 |not pass| FUNEXP |
|00001c30| 73 69 6e 63 65 20 65 6d | 69 74 5f 6c 69 62 72 61 |since em|it_libra|
|00001c40| 72 79 5f 63 61 6c 6c 20 | 69 6e 73 69 73 74 73 0d |ry_call |insists.|
|00001c50| 09 20 6f 6e 20 67 65 74 | 74 69 6e 67 20 61 20 53 |. on get|ting a S|
|00001c60| 59 4d 42 4f 4c 5f 52 45 | 46 2e 20 20 42 75 74 20 |YMBOL_RE|F. But |
|00001c70| 63 73 65 20 77 69 6c 6c | 20 6d 61 6b 65 20 74 68 |cse will| make th|
|00001c80| 69 73 20 53 59 4d 42 4f | 4c 5f 52 45 46 0d 09 20 |is SYMBO|L_REF.. |
|00001c90| 62 65 20 72 65 70 6c 61 | 63 65 64 20 77 69 74 68 |be repla|ced with|
|00001ca0| 20 74 68 65 20 63 6f 70 | 79 20 77 65 20 6d 61 64 | the cop|y we mad|
|00001cb0| 65 20 6a 75 73 74 20 61 | 62 6f 76 65 2e 20 20 2a |e just a|bove. *|
|00001cc0| 2f 0d 20 20 20 20 20 20 | 2f 2a 20 50 61 73 73 20 |/. |/* Pass |
|00001cd0| 31 20 66 6f 72 20 4e 4f | 5f 51 55 45 55 45 20 73 |1 for NO|_QUEUE s|
|00001ce0| 6f 20 77 65 20 64 6f 6e | 27 74 20 6c 6f 73 65 20 |o we don|'t lose |
|00001cf0| 61 6e 79 20 69 6e 63 72 | 65 6d 65 6e 74 73 0d 09 |any incr|ements..|
|00001d00| 20 69 66 20 74 68 65 20 | 6c 69 62 63 61 6c 6c 20 | if the |libcall |
|00001d10| 69 73 20 63 73 65 27 64 | 20 6f 72 20 6d 6f 76 65 |is cse'd| or move|
|00001d20| 64 2e 20 20 2a 2f 0d 20 | 20 20 20 20 20 65 6d 69 |d. */. | emi|
|00001d30| 74 5f 6c 69 62 72 61 72 | 79 5f 63 61 6c 6c 20 28 |t_librar|y_call (|
|00001d40| 67 65 6e 5f 72 74 78 20 | 28 53 59 4d 42 4f 4c 5f |gen_rtx |(SYMBOL_|
|00001d50| 52 45 46 2c 20 50 6d 6f | 64 65 2c 0d 09 09 09 09 |REF, Pmo|de,.....|
|00001d60| 20 20 62 69 6e 6f 70 74 | 61 62 2d 3e 68 61 6e 64 | binopt|ab->hand|
|00001d70| 6c 65 72 73 5b 28 69 6e | 74 29 20 6d 6f 64 65 5d |lers[(in|t) mode]|
|00001d80| 2e 6c 69 62 5f 63 61 6c | 6c 29 2c 0d 09 09 09 20 |.lib_cal|l),.... |
|00001d90| 31 2c 20 6d 6f 64 65 2c | 20 32 2c 20 6f 70 30 2c |1, mode,| 2, op0,|
|00001da0| 20 6d 6f 64 65 2c 20 6f | 70 31 2c 20 6d 6f 64 65 | mode, o|p1, mode|
|00001db0| 29 3b 0d 20 20 20 20 20 | 20 74 61 72 67 65 74 20 |);. | target |
|00001dc0| 3d 20 68 61 72 64 5f 6c | 69 62 63 61 6c 6c 5f 76 |= hard_l|ibcall_v|
|00001dd0| 61 6c 75 65 20 28 6d 6f | 64 65 29 3b 0d 20 20 20 |alue (mo|de);. |
|00001de0| 20 20 20 74 65 6d 70 20 | 3d 20 63 6f 70 79 5f 74 | temp |= copy_t|
|00001df0| 6f 5f 72 65 67 20 28 74 | 61 72 67 65 74 29 3b 0d |o_reg (t|arget);.|
|00001e00| 0d 20 20 20 20 20 20 69 | 6e 73 6e 5f 66 69 72 73 |. i|nsn_firs|
|00001e10| 74 20 3d 20 4e 45 58 54 | 5f 49 4e 53 4e 20 28 69 |t = NEXT|_INSN (i|
|00001e20| 6e 73 6e 5f 62 65 66 6f | 72 65 29 3b 0d 20 20 20 |nsn_befo|re);. |
|00001e30| 20 20 20 69 6e 73 6e 5f | 6c 61 73 74 20 3d 20 67 | insn_|last = g|
|00001e40| 65 74 5f 6c 61 73 74 5f | 69 6e 73 6e 20 28 29 3b |et_last_|insn ();|
|00001e50| 0d 0d 20 20 20 20 20 20 | 52 45 47 5f 4e 4f 54 45 |.. |REG_NOTE|
|00001e60| 53 20 28 69 6e 73 6e 5f | 6c 61 73 74 29 0d 09 3d |S (insn_|last)..=|
|00001e70| 20 67 65 6e 5f 72 74 78 | 20 28 45 58 50 52 5f 4c | gen_rtx| (EXPR_L|
|00001e80| 49 53 54 2c 20 52 45 47 | 5f 45 51 55 41 4c 2c 0d |IST, REG|_EQUAL,.|
|00001e90| 09 09 20 20 20 67 65 6e | 5f 72 74 78 20 28 62 69 |.. gen|_rtx (bi|
|00001ea0| 6e 6f 70 74 61 62 2d 3e | 63 6f 64 65 2c 20 6d 6f |noptab->|code, mo|
|00001eb0| 64 65 2c 20 6f 70 30 2c | 20 6f 70 31 29 2c 0d 09 |de, op0,| op1),..|
|00001ec0| 09 20 20 20 67 65 6e 5f | 72 74 78 20 28 49 4e 53 |. gen_|rtx (INS|
|00001ed0| 4e 5f 4c 49 53 54 2c 20 | 52 45 47 5f 52 45 54 56 |N_LIST, |REG_RETV|
|00001ee0| 41 4c 2c 20 69 6e 73 6e | 5f 66 69 72 73 74 2c 0d |AL, insn|_first,.|
|00001ef0| 09 09 09 20 20 20 20 52 | 45 47 5f 4e 4f 54 45 53 |... R|EG_NOTES|
|00001f00| 20 28 69 6e 73 6e 5f 6c | 61 73 74 29 29 29 3b 0d | (insn_l|ast)));.|
|00001f10| 20 20 20 20 20 20 52 45 | 47 5f 4e 4f 54 45 53 20 | RE|G_NOTES |
|00001f20| 28 69 6e 73 6e 5f 66 69 | 72 73 74 29 0d 09 3d 20 |(insn_fi|rst)..= |
|00001f30| 67 65 6e 5f 72 74 78 20 | 28 49 4e 53 4e 5f 4c 49 |gen_rtx |(INSN_LI|
|00001f40| 53 54 2c 20 52 45 47 5f | 4c 49 42 43 41 4c 4c 2c |ST, REG_|LIBCALL,|
|00001f50| 20 69 6e 73 6e 5f 6c 61 | 73 74 2c 0d 09 09 20 20 | insn_la|st,... |
|00001f60| 20 52 45 47 5f 4e 4f 54 | 45 53 20 28 69 6e 73 6e | REG_NOT|ES (insn|
|00001f70| 5f 66 69 72 73 74 29 29 | 3b 0d 20 20 20 20 20 20 |_first))|;. |
|00001f80| 72 65 74 75 72 6e 20 74 | 65 6d 70 3b 0d 20 20 20 |return t|emp;. |
|00001f90| 20 7d 0d 0d 20 20 64 65 | 6c 65 74 65 5f 69 6e 73 | }.. de|lete_ins|
|00001fa0| 6e 73 5f 73 69 6e 63 65 | 20 28 6c 61 73 74 29 3b |ns_since| (last);|
|00001fb0| 0d 0d 20 20 2f 2a 20 49 | 74 20 63 61 6e 27 74 20 |.. /* I|t can't |
|00001fc0| 62 65 20 64 6f 6e 65 20 | 69 6e 20 74 68 69 73 20 |be done |in this |
|00001fd0| 6d 6f 64 65 2e 20 20 43 | 61 6e 20 77 65 20 64 6f |mode. C|an we do|
|00001fe0| 20 69 74 20 69 6e 20 61 | 20 77 69 64 65 72 20 6d | it in a| wider m|
|00001ff0| 6f 64 65 3f 20 20 2a 2f | 0d 0d 20 20 69 66 20 28 |ode? */|.. if (|
|00002000| 21 20 28 6d 65 74 68 6f | 64 73 20 3d 3d 20 4f 50 |! (metho|ds == OP|
|00002010| 54 41 42 5f 57 49 44 45 | 4e 20 7c 7c 20 6d 65 74 |TAB_WIDE|N || met|
|00002020| 68 6f 64 73 20 3d 3d 20 | 4f 50 54 41 42 5f 4c 49 |hods == |OPTAB_LI|
|00002030| 42 5f 57 49 44 45 4e 0d | 09 20 7c 7c 20 6d 65 74 |B_WIDEN.|. || met|
|00002040| 68 6f 64 73 20 3d 3d 20 | 4f 50 54 41 42 5f 4d 55 |hods == |OPTAB_MU|
|00002050| 53 54 5f 57 49 44 45 4e | 29 29 0d 20 20 20 20 72 |ST_WIDEN|)). r|
|00002060| 65 74 75 72 6e 20 30 3b | 09 09 09 2f 2a 20 43 61 |eturn 0;|.../* Ca|
|00002070| 6c 6c 65 72 20 73 61 79 | 73 2c 20 64 6f 6e 27 74 |ller say|s, don't|
|00002080| 20 65 76 65 6e 20 74 72 | 79 2e 20 20 2a 2f 0d 0d | even tr|y. */..|
|00002090| 20 20 2f 2a 20 43 6f 6d | 70 75 74 65 20 74 68 65 | /* Com|pute the|
|000020a0| 20 76 61 6c 75 65 20 6f | 66 20 4d 45 54 48 4f 44 | value o|f METHOD|
|000020b0| 53 20 74 6f 20 70 61 73 | 73 20 74 6f 20 72 65 63 |S to pas|s to rec|
|000020c0| 75 72 73 69 76 65 20 63 | 61 6c 6c 73 2e 0d 20 20 |ursive c|alls.. |
|000020d0| 20 20 20 44 6f 6e 27 74 | 20 61 6c 6c 6f 77 20 77 | Don't| allow w|
|000020e0| 69 64 65 6e 69 6e 67 20 | 74 6f 20 62 65 20 74 72 |idening |to be tr|
|000020f0| 69 65 64 20 72 65 63 75 | 72 73 69 76 65 6c 79 2e |ied recu|rsively.|
|00002100| 20 20 2a 2f 0d 0d 20 20 | 6d 65 74 68 6f 64 73 20 | */.. |methods |
|00002110| 3d 20 28 6d 65 74 68 6f | 64 73 20 3d 3d 20 4f 50 |= (metho|ds == OP|
|00002120| 54 41 42 5f 4c 49 42 5f | 57 49 44 45 4e 20 3f 20 |TAB_LIB_|WIDEN ? |
|00002130| 4f 50 54 41 42 5f 4c 49 | 42 20 3a 20 4f 50 54 41 |OPTAB_LI|B : OPTA|
|00002140| 42 5f 44 49 52 45 43 54 | 29 3b 0d 0d 20 20 2f 2a |B_DIRECT|);.. /*|
|00002150| 20 57 69 64 65 6e 69 6e | 67 20 69 73 20 6e 6f 77 | Widenin|g is now|
|00002160| 20 69 6e 64 65 70 65 6e | 64 65 6e 74 20 6f 66 20 | indepen|dent of |
|00002170| 73 70 65 63 69 66 69 63 | 20 6d 61 63 68 69 6e 65 |specific| machine|
|00002180| 20 6d 6f 64 65 73 2e 0d | 20 20 20 20 20 49 74 20 | modes..| It |
|00002190| 69 73 20 61 73 73 75 6d | 65 64 20 74 68 61 74 20 |is assum|ed that |
|000021a0| 77 69 64 65 6e 69 6e 67 | 20 6d 61 79 20 62 65 20 |widening| may be |
|000021b0| 70 65 72 66 6f 72 6d 65 | 64 20 74 6f 20 61 6e 79 |performe|d to any|
|000021c0| 0d 20 20 20 20 20 68 69 | 67 68 65 72 20 6e 75 6d |. hi|gher num|
|000021d0| 62 65 72 65 64 20 6d 6f | 64 65 20 69 6e 20 74 68 |bered mo|de in th|
|000021e0| 65 20 73 61 6d 65 20 6d | 6f 64 65 20 63 6c 61 73 |e same m|ode clas|
|000021f0| 73 2e 20 20 2a 2f 0d 0d | 20 20 69 66 20 28 63 6c |s. */..| if (cl|
|00002200| 61 73 73 20 3d 3d 20 4d | 4f 44 45 5f 49 4e 54 20 |ass == M|ODE_INT |
|00002210| 7c 7c 20 63 6c 61 73 73 | 20 3d 3d 20 4d 4f 44 45 ||| class| == MODE|
|00002220| 5f 46 4c 4f 41 54 29 0d | 20 20 20 20 7b 0d 20 20 |_FLOAT).| {. |
|00002230| 20 20 20 20 66 6f 72 20 | 28 77 69 64 65 72 5f 6d | for |(wider_m|
|00002240| 6f 64 65 20 3d 20 49 4e | 43 5f 4d 4f 44 45 20 28 |ode = IN|C_MODE (|
|00002250| 6d 6f 64 65 29 3b 0d 09 | 20 20 20 28 28 69 6e 74 |mode);..| ((int|
|00002260| 29 20 77 69 64 65 72 5f | 6d 6f 64 65 20 3c 20 28 |) wider_|mode < (|
|00002270| 69 6e 74 29 20 4d 41 58 | 5f 4d 41 43 48 49 4e 45 |int) MAX|_MACHINE|
|00002280| 5f 4d 4f 44 45 0d 09 20 | 20 20 20 26 26 20 47 45 |_MODE.. | && GE|
|00002290| 54 5f 4d 4f 44 45 5f 43 | 4c 41 53 53 20 28 77 69 |T_MODE_C|LASS (wi|
|000022a0| 64 65 72 5f 6d 6f 64 65 | 29 20 3d 3d 20 63 6c 61 |der_mode|) == cla|
|000022b0| 73 73 29 3b 0d 09 20 20 | 20 77 69 64 65 72 5f 6d |ss);.. | wider_m|
|000022c0| 6f 64 65 20 3d 20 49 4e | 43 5f 4d 4f 44 45 20 28 |ode = IN|C_MODE (|
|000022d0| 77 69 64 65 72 5f 6d 6f | 64 65 29 29 0d 09 7b 0d |wider_mo|de))..{.|
|000022e0| 09 20 20 69 66 20 28 28 | 62 69 6e 6f 70 74 61 62 |. if ((|binoptab|
|000022f0| 2d 3e 68 61 6e 64 6c 65 | 72 73 5b 28 69 6e 74 29 |->handle|rs[(int)|
|00002300| 20 77 69 64 65 72 5f 6d | 6f 64 65 5d 2e 69 6e 73 | wider_m|ode].ins|
|00002310| 6e 5f 63 6f 64 65 0d 09 | 20 20 20 20 20 20 20 21 |n_code..| !|
|00002320| 3d 20 43 4f 44 45 5f 46 | 4f 52 5f 6e 6f 74 68 69 |= CODE_F|OR_nothi|
|00002330| 6e 67 29 0d 09 20 20 20 | 20 20 20 7c 7c 20 28 6d |ng).. | || (m|
|00002340| 65 74 68 6f 64 73 20 3d | 3d 20 4f 50 54 41 42 5f |ethods =|= OPTAB_|
|00002350| 4c 49 42 0d 09 09 20 20 | 26 26 20 62 69 6e 6f 70 |LIB... |&& binop|
|00002360| 74 61 62 2d 3e 68 61 6e | 64 6c 65 72 73 5b 28 69 |tab->han|dlers[(i|
|00002370| 6e 74 29 20 77 69 64 65 | 72 5f 6d 6f 64 65 5d 2e |nt) wide|r_mode].|
|00002380| 6c 69 62 5f 63 61 6c 6c | 29 29 0d 09 20 20 20 20 |lib_call|)).. |
|00002390| 7b 0d 09 20 20 20 20 20 | 20 72 74 78 20 78 6f 70 |{.. | rtx xop|
|000023a0| 30 20 3d 20 6f 70 30 2c | 20 78 6f 70 31 20 3d 20 |0 = op0,| xop1 = |
|000023b0| 6f 70 31 3b 0d 09 20 20 | 20 20 20 20 69 6e 74 20 |op1;.. | int |
|000023c0| 6e 6f 5f 65 78 74 65 6e | 64 20 3d 20 30 3b 0d 0d |no_exten|d = 0;..|
|000023d0| 09 20 20 20 20 20 20 2f | 2a 20 46 6f 72 20 63 65 |. /|* For ce|
|000023e0| 72 74 61 69 6e 20 6f 70 | 65 72 61 74 69 6f 6e 73 |rtain op|erations|
|000023f0| 2c 20 77 65 20 6e 65 65 | 64 20 6e 6f 74 20 61 63 |, we nee|d not ac|
|00002400| 74 75 61 6c 6c 79 20 65 | 78 74 65 6e 64 0d 09 09 |tually e|xtend...|
|00002410| 20 74 68 65 20 6e 61 72 | 72 6f 77 20 6f 70 65 72 | the nar|row oper|
|00002420| 61 6e 64 73 2c 20 61 73 | 20 6c 6f 6e 67 20 61 73 |ands, as| long as|
|00002430| 20 77 65 20 77 69 6c 6c | 20 74 72 75 6e 63 61 74 | we will| truncat|
|00002440| 65 0d 09 09 20 74 68 65 | 20 72 65 73 75 6c 74 73 |e... the| results|
|00002450| 20 74 6f 20 74 68 65 20 | 73 61 6d 65 20 6e 61 72 | to the |same nar|
|00002460| 72 6f 77 6e 65 73 73 2e | 20 20 2a 2f 0d 0d 09 20 |rowness.| */... |
|00002470| 20 20 20 20 20 69 66 20 | 28 62 69 6e 6f 70 74 61 | if |(binopta|
|00002480| 62 20 3d 3d 20 69 6f 72 | 5f 6f 70 74 61 62 20 7c |b == ior|_optab ||
|00002490| 7c 20 62 69 6e 6f 70 74 | 61 62 20 3d 3d 20 61 6e || binopt|ab == an|
|000024a0| 64 5f 6f 70 74 61 62 0d | 09 09 20 20 7c 7c 20 62 |d_optab.|.. || b|
|000024b0| 69 6e 6f 70 74 61 62 20 | 3d 3d 20 78 6f 72 5f 6f |inoptab |== xor_o|
|000024c0| 70 74 61 62 20 7c 7c 20 | 62 69 6e 6f 70 74 61 62 |ptab || |binoptab|
|000024d0| 20 3d 3d 20 61 6e 64 63 | 62 5f 6f 70 74 61 62 0d | == andc|b_optab.|
|000024e0| 09 09 20 20 7c 7c 20 62 | 69 6e 6f 70 74 61 62 20 |.. || b|inoptab |
|000024f0| 3d 3d 20 61 64 64 5f 6f | 70 74 61 62 20 7c 7c 20 |== add_o|ptab || |
|00002500| 62 69 6e 6f 70 74 61 62 | 20 3d 3d 20 73 75 62 5f |binoptab| == sub_|
|00002510| 6f 70 74 61 62 0d 09 09 | 20 20 7c 7c 20 62 69 6e |optab...| || bin|
|00002520| 6f 70 74 61 62 20 3d 3d | 20 73 6d 75 6c 5f 6f 70 |optab ==| smul_op|
|00002530| 74 61 62 20 7c 7c 20 62 | 69 6e 6f 70 74 61 62 20 |tab || b|inoptab |
|00002540| 3d 3d 20 75 6d 75 6c 5f | 6f 70 74 61 62 0d 09 09 |== umul_|optab...|
|00002550| 20 20 7c 7c 20 62 69 6e | 6f 70 74 61 62 20 3d 3d | || bin|optab ==|
|00002560| 20 61 73 68 6c 5f 6f 70 | 74 61 62 20 7c 7c 20 62 | ashl_op|tab || b|
|00002570| 69 6e 6f 70 74 61 62 20 | 3d 3d 20 6c 73 68 6c 5f |inoptab |== lshl_|
|00002580| 6f 70 74 61 62 29 0d 09 | 09 6e 6f 5f 65 78 74 65 |optab)..|.no_exte|
|00002590| 6e 64 20 3d 20 31 3b 0d | 0d 09 20 20 20 20 20 20 |nd = 1;.|.. |
|000025a0| 69 66 20 28 47 45 54 5f | 4d 4f 44 45 20 28 78 6f |if (GET_|MODE (xo|
|000025b0| 70 30 29 20 21 3d 20 56 | 4f 49 44 6d 6f 64 65 29 |p0) != V|OIDmode)|
|000025c0| 0d 09 09 7b 0d 09 09 20 | 20 69 66 20 28 6e 6f 5f |...{... | if (no_|
|000025d0| 65 78 74 65 6e 64 29 0d | 09 09 20 20 20 20 7b 0d |extend).|.. {.|
|000025e0| 09 09 20 20 20 20 20 20 | 74 65 6d 70 20 3d 20 66 |.. |temp = f|
|000025f0| 6f 72 63 65 5f 72 65 67 | 20 28 47 45 54 5f 4d 4f |orce_reg| (GET_MO|
|00002600| 44 45 20 28 78 6f 70 30 | 29 2c 20 78 6f 70 30 29 |DE (xop0|), xop0)|
|00002610| 3b 0d 09 09 20 20 20 20 | 20 20 78 6f 70 30 20 3d |;... | xop0 =|
|00002620| 20 67 65 6e 5f 72 74 78 | 20 28 53 55 42 52 45 47 | gen_rtx| (SUBREG|
|00002630| 2c 20 77 69 64 65 72 5f | 6d 6f 64 65 2c 20 74 65 |, wider_|mode, te|
|00002640| 6d 70 2c 20 30 29 3b 0d | 09 09 20 20 20 20 7d 0d |mp, 0);.|.. }.|
|00002650| 09 09 20 20 65 6c 73 65 | 0d 09 09 20 20 20 20 7b |.. else|... {|
|00002660| 0d 09 09 20 20 20 20 20 | 20 74 65 6d 70 20 3d 20 |... | temp = |
|00002670| 67 65 6e 5f 72 65 67 5f | 72 74 78 20 28 77 69 64 |gen_reg_|rtx (wid|
|00002680| 65 72 5f 6d 6f 64 65 29 | 3b 0d 09 09 20 20 20 20 |er_mode)|;... |
|00002690| 20 20 63 6f 6e 76 65 72 | 74 5f 6d 6f 76 65 20 28 | conver|t_move (|
|000026a0| 74 65 6d 70 2c 20 78 6f | 70 30 2c 20 75 6e 73 69 |temp, xo|p0, unsi|
|000026b0| 67 6e 65 64 70 29 3b 0d | 09 09 20 20 20 20 20 20 |gnedp);.|.. |
|000026c0| 78 6f 70 30 20 3d 20 74 | 65 6d 70 3b 0d 09 09 20 |xop0 = t|emp;... |
|000026d0| 20 20 20 7d 0d 09 09 7d | 0d 09 20 20 20 20 20 20 | }...}|.. |
|000026e0| 69 66 20 28 47 45 54 5f | 4d 4f 44 45 20 28 78 6f |if (GET_|MODE (xo|
|000026f0| 70 31 29 20 21 3d 20 56 | 4f 49 44 6d 6f 64 65 29 |p1) != V|OIDmode)|
|00002700| 0d 09 09 7b 0d 09 09 20 | 20 69 66 20 28 6e 6f 5f |...{... | if (no_|
|00002710| 65 78 74 65 6e 64 29 0d | 09 09 20 20 20 20 7b 0d |extend).|.. {.|
|00002720| 09 09 20 20 20 20 20 20 | 74 65 6d 70 20 3d 20 66 |.. |temp = f|
|00002730| 6f 72 63 65 5f 72 65 67 | 20 28 47 45 54 5f 4d 4f |orce_reg| (GET_MO|
|00002740| 44 45 20 28 78 6f 70 31 | 29 2c 20 78 6f 70 31 29 |DE (xop1|), xop1)|
|00002750| 3b 0d 09 09 20 20 20 20 | 20 20 78 6f 70 31 20 3d |;... | xop1 =|
|00002760| 20 67 65 6e 5f 72 74 78 | 20 28 53 55 42 52 45 47 | gen_rtx| (SUBREG|
|00002770| 2c 20 77 69 64 65 72 5f | 6d 6f 64 65 2c 20 74 65 |, wider_|mode, te|
|00002780| 6d 70 2c 20 30 29 3b 0d | 09 09 20 20 20 20 7d 0d |mp, 0);.|.. }.|
|00002790| 09 09 20 20 65 6c 73 65 | 0d 09 09 20 20 20 20 7b |.. else|... {|
|000027a0| 0d 09 09 20 20 20 20 20 | 20 74 65 6d 70 20 3d 20 |... | temp = |
|000027b0| 67 65 6e 5f 72 65 67 5f | 72 74 78 20 28 77 69 64 |gen_reg_|rtx (wid|
|000027c0| 65 72 5f 6d 6f 64 65 29 | 3b 0d 09 09 20 20 20 20 |er_mode)|;... |
|000027d0| 20 20 63 6f 6e 76 65 72 | 74 5f 6d 6f 76 65 20 28 | conver|t_move (|
|000027e0| 74 65 6d 70 2c 20 78 6f | 70 31 2c 20 75 6e 73 69 |temp, xo|p1, unsi|
|000027f0| 67 6e 65 64 70 29 3b 0d | 09 09 20 20 20 20 20 20 |gnedp);.|.. |
|00002800| 78 6f 70 31 20 3d 20 74 | 65 6d 70 3b 0d 09 09 20 |xop1 = t|emp;... |
|00002810| 20 20 20 7d 0d 09 09 7d | 0d 0d 09 20 20 20 20 20 | }...}|... |
|00002820| 20 74 65 6d 70 20 3d 20 | 65 78 70 61 6e 64 5f 62 | temp = |expand_b|
|00002830| 69 6e 6f 70 20 28 77 69 | 64 65 72 5f 6d 6f 64 65 |inop (wi|der_mode|
|00002840| 2c 20 62 69 6e 6f 70 74 | 61 62 2c 20 78 6f 70 30 |, binopt|ab, xop0|
|00002850| 2c 20 78 6f 70 31 2c 20 | 30 2c 0d 09 09 09 09 20 |, xop1, |0,..... |
|00002860| 20 20 75 6e 73 69 67 6e | 65 64 70 2c 20 6d 65 74 | unsign|edp, met|
|00002870| 68 6f 64 73 29 3b 0d 09 | 20 20 20 20 20 20 69 66 |hods);..| if|
|00002880| 20 28 74 65 6d 70 29 0d | 09 09 7b 0d 09 09 20 20 | (temp).|..{... |
|00002890| 69 66 20 28 63 6c 61 73 | 73 20 3d 3d 20 4d 4f 44 |if (clas|s == MOD|
|000028a0| 45 5f 46 4c 4f 41 54 29 | 0d 09 09 20 20 20 20 7b |E_FLOAT)|... {|
|000028b0| 0d 09 09 20 20 20 20 20 | 20 69 66 20 28 74 61 72 |... | if (tar|
|000028c0| 67 65 74 20 3d 3d 20 30 | 29 0d 09 09 09 74 61 72 |get == 0|)....tar|
|000028d0| 67 65 74 20 3d 20 67 65 | 6e 5f 72 65 67 5f 72 74 |get = ge|n_reg_rt|
|000028e0| 78 20 28 6d 6f 64 65 29 | 3b 0d 09 09 20 20 20 20 |x (mode)|;... |
|000028f0| 20 20 63 6f 6e 76 65 72 | 74 5f 6d 6f 76 65 20 28 | conver|t_move (|
|00002900| 74 61 72 67 65 74 2c 20 | 74 65 6d 70 2c 20 30 29 |target, |temp, 0)|
|00002910| 3b 0d 09 09 20 20 20 20 | 20 20 72 65 74 75 72 6e |;... | return|
|00002920| 20 74 61 72 67 65 74 3b | 0d 09 09 20 20 20 20 7d | target;|... }|
|00002930| 0d 09 09 20 20 65 6c 73 | 65 0d 09 09 20 20 20 20 |... els|e... |
|00002940| 72 65 74 75 72 6e 20 67 | 65 6e 5f 6c 6f 77 70 61 |return g|en_lowpa|
|00002950| 72 74 20 28 6d 6f 64 65 | 2c 20 74 65 6d 70 29 3b |rt (mode|, temp);|
|00002960| 0d 09 09 7d 0d 09 20 20 | 20 20 20 20 65 6c 73 65 |...}.. | else|
|00002970| 0d 09 09 64 65 6c 65 74 | 65 5f 69 6e 73 6e 73 5f |...delet|e_insns_|
|00002980| 73 69 6e 63 65 20 28 6c | 61 73 74 29 3b 0d 09 20 |since (l|ast);.. |
|00002990| 20 20 20 7d 0d 09 7d 0d | 20 20 20 20 7d 0d 0d 20 | }..}.| }.. |
|000029a0| 20 72 65 74 75 72 6e 20 | 30 3b 0d 7d 0d 0c 0d 2f | return |0;.}.../|
|000029b0| 2a 20 45 78 70 61 6e 64 | 20 61 20 62 69 6e 61 72 |* Expand| a binar|
|000029c0| 79 20 6f 70 65 72 61 74 | 6f 72 20 77 68 69 63 68 |y operat|or which|
|000029d0| 20 68 61 73 20 62 6f 74 | 68 20 73 69 67 6e 65 64 | has bot|h signed|
|000029e0| 20 61 6e 64 20 75 6e 73 | 69 67 6e 65 64 20 66 6f | and uns|igned fo|
|000029f0| 72 6d 73 2e 0d 20 20 20 | 55 4f 50 54 41 42 20 69 |rms.. |UOPTAB i|
|00002a00| 73 20 74 68 65 20 6f 70 | 74 61 62 20 66 6f 72 20 |s the op|tab for |
|00002a10| 75 6e 73 69 67 6e 65 64 | 20 6f 70 65 72 61 74 69 |unsigned| operati|
|00002a20| 6f 6e 73 2c 20 61 6e 64 | 20 53 4f 50 54 41 42 20 |ons, and| SOPTAB |
|00002a30| 69 73 20 66 6f 72 0d 20 | 20 20 73 69 67 6e 65 64 |is for. | signed|
|00002a40| 20 6f 70 65 72 61 74 69 | 6f 6e 73 2e 0d 0d 20 20 | operati|ons... |
|00002a50| 20 49 66 20 77 65 20 77 | 69 64 65 6e 20 75 6e 73 | If we w|iden uns|
|00002a60| 69 67 6e 65 64 20 6f 70 | 65 72 61 6e 64 73 2c 20 |igned op|erands, |
|00002a70| 77 65 20 6d 61 79 20 75 | 73 65 20 61 20 73 69 67 |we may u|se a sig|
|00002a80| 6e 65 64 20 77 69 64 65 | 72 20 6f 70 65 72 61 74 |ned wide|r operat|
|00002a90| 69 6f 6e 20 69 6e 73 74 | 65 61 64 0d 20 20 20 6f |ion inst|ead. o|
|00002aa0| 66 20 61 6e 20 75 6e 73 | 69 67 6e 65 64 20 77 69 |f an uns|igned wi|
|00002ab0| 64 65 72 20 6f 70 65 72 | 61 74 69 6f 6e 2c 20 73 |der oper|ation, s|
|00002ac0| 69 6e 63 65 20 74 68 65 | 20 72 65 73 75 6c 74 20 |ince the| result |
|00002ad0| 77 6f 75 6c 64 20 62 65 | 20 74 68 65 20 73 61 6d |would be| the sam|
|00002ae0| 65 2e 20 20 2a 2f 0d 0d | 72 74 78 0d 73 69 67 6e |e. */..|rtx.sign|
|00002af0| 5f 65 78 70 61 6e 64 5f | 62 69 6e 6f 70 20 28 6d |_expand_|binop (m|
|00002b00| 6f 64 65 2c 20 75 6f 70 | 74 61 62 2c 20 73 6f 70 |ode, uop|tab, sop|
|00002b10| 74 61 62 2c 20 6f 70 30 | 2c 20 6f 70 31 2c 20 74 |tab, op0|, op1, t|
|00002b20| 61 72 67 65 74 2c 20 75 | 6e 73 69 67 6e 65 64 70 |arget, u|nsignedp|
|00002b30| 2c 20 6d 65 74 68 6f 64 | 73 29 0d 20 20 20 20 65 |, method|s). e|
|00002b40| 6e 75 6d 20 6d 61 63 68 | 69 6e 65 5f 6d 6f 64 65 |num mach|ine_mode|
|00002b50| 20 6d 6f 64 65 3b 0d 20 | 20 20 20 6f 70 74 61 62 | mode;. | optab|
|00002b60| 20 75 6f 70 74 61 62 2c | 20 73 6f 70 74 61 62 3b | uoptab,| soptab;|
|00002b70| 0d 20 20 20 20 72 74 78 | 20 6f 70 30 2c 20 6f 70 |. rtx| op0, op|
|00002b80| 31 2c 20 74 61 72 67 65 | 74 3b 0d 20 20 20 20 69 |1, targe|t;. i|
|00002b90| 6e 74 20 75 6e 73 69 67 | 6e 65 64 70 3b 0d 20 20 |nt unsig|nedp;. |
|00002ba0| 20 20 65 6e 75 6d 20 6f | 70 74 61 62 5f 6d 65 74 | enum o|ptab_met|
|00002bb0| 68 6f 64 73 20 6d 65 74 | 68 6f 64 73 3b 0d 7b 0d |hods met|hods;.{.|
|00002bc0| 20 20 72 65 67 69 73 74 | 65 72 20 72 74 78 20 74 | regist|er rtx t|
|00002bd0| 65 6d 70 3b 0d 20 20 6f | 70 74 61 62 20 64 69 72 |emp;. o|ptab dir|
|00002be0| 65 63 74 5f 6f 70 74 61 | 62 20 3d 20 75 6e 73 69 |ect_opta|b = unsi|
|00002bf0| 67 6e 65 64 70 20 3f 20 | 75 6f 70 74 61 62 20 3a |gnedp ? |uoptab :|
|00002c00| 20 73 6f 70 74 61 62 3b | 0d 20 20 73 74 72 75 63 | soptab;|. struc|
|00002c10| 74 20 6f 70 74 61 62 20 | 77 69 64 65 5f 73 6f 70 |t optab |wide_sop|
|00002c20| 74 61 62 3b 0d 0d 20 20 | 2f 2a 20 44 6f 20 69 74 |tab;.. |/* Do it|
|00002c30| 20 77 69 74 68 6f 75 74 | 20 77 69 64 65 6e 69 6e | without| widenin|
|00002c40| 67 2c 20 69 66 20 70 6f | 73 73 69 62 6c 65 2e 20 |g, if po|ssible. |
|00002c50| 20 2a 2f 0d 20 20 74 65 | 6d 70 20 3d 20 65 78 70 | */. te|mp = exp|
|00002c60| 61 6e 64 5f 62 69 6e 6f | 70 20 28 6d 6f 64 65 2c |and_bino|p (mode,|
|00002c70| 20 64 69 72 65 63 74 5f | 6f 70 74 61 62 2c 20 6f | direct_|optab, o|
|00002c80| 70 30 2c 20 6f 70 31 2c | 20 74 61 72 67 65 74 2c |p0, op1,| target,|
|00002c90| 0d 09 09 20 20 20 20 20 | 20 20 75 6e 73 69 67 6e |... | unsign|
|00002ca0| 65 64 70 2c 20 4f 50 54 | 41 42 5f 44 49 52 45 43 |edp, OPT|AB_DIREC|
|00002cb0| 54 29 3b 0d 20 20 69 66 | 20 28 74 65 6d 70 20 7c |T);. if| (temp ||
|00002cc0| 7c 20 6d 65 74 68 6f 64 | 73 20 3d 3d 20 4f 50 54 || method|s == OPT|
|00002cd0| 41 42 5f 44 49 52 45 43 | 54 29 0d 20 20 20 20 72 |AB_DIREC|T). r|
|00002ce0| 65 74 75 72 6e 20 74 65 | 6d 70 3b 0d 0d 20 20 2f |eturn te|mp;.. /|
|00002cf0| 2a 20 54 72 79 20 77 69 | 64 65 6e 69 6e 67 20 74 |* Try wi|dening t|
|00002d00| 6f 20 61 20 73 69 67 6e | 65 64 20 69 6e 74 2e 20 |o a sign|ed int. |
|00002d10| 20 4d 61 6b 65 20 61 20 | 66 61 6b 65 20 73 69 67 | Make a |fake sig|
|00002d20| 6e 65 64 20 6f 70 74 61 | 62 20 74 68 61 74 0d 20 |ned opta|b that. |
|00002d30| 20 20 20 20 68 69 64 65 | 73 20 61 6e 79 20 73 69 | hide|s any si|
|00002d40| 67 6e 65 64 20 69 6e 73 | 6e 20 66 6f 72 20 64 69 |gned ins|n for di|
|00002d50| 72 65 63 74 20 75 73 65 | 2e 20 20 2a 2f 0d 20 20 |rect use|. */. |
|00002d60| 77 69 64 65 5f 73 6f 70 | 74 61 62 20 3d 20 2a 73 |wide_sop|tab = *s|
|00002d70| 6f 70 74 61 62 3b 0d 20 | 20 77 69 64 65 5f 73 6f |optab;. | wide_so|
|00002d80| 70 74 61 62 2e 68 61 6e | 64 6c 65 72 73 5b 28 69 |ptab.han|dlers[(i|
|00002d90| 6e 74 29 20 6d 6f 64 65 | 5d 2e 69 6e 73 6e 5f 63 |nt) mode|].insn_c|
|00002da0| 6f 64 65 20 3d 20 43 4f | 44 45 5f 46 4f 52 5f 6e |ode = CO|DE_FOR_n|
|00002db0| 6f 74 68 69 6e 67 3b 0d | 20 20 77 69 64 65 5f 73 |othing;.| wide_s|
|00002dc0| 6f 70 74 61 62 2e 68 61 | 6e 64 6c 65 72 73 5b 28 |optab.ha|ndlers[(|
|00002dd0| 69 6e 74 29 20 6d 6f 64 | 65 5d 2e 6c 69 62 5f 63 |int) mod|e].lib_c|
|00002de0| 61 6c 6c 20 3d 20 30 3b | 0d 0d 20 20 74 65 6d 70 |all = 0;|.. temp|
|00002df0| 20 3d 20 65 78 70 61 6e | 64 5f 62 69 6e 6f 70 20 | = expan|d_binop |
|00002e00| 28 6d 6f 64 65 2c 20 26 | 77 69 64 65 5f 73 6f 70 |(mode, &|wide_sop|
|00002e10| 74 61 62 2c 20 6f 70 30 | 2c 20 6f 70 31 2c 20 74 |tab, op0|, op1, t|
|00002e20| 61 72 67 65 74 2c 0d 09 | 09 20 20 20 20 20 20 20 |arget,..|. |
|00002e30| 75 6e 73 69 67 6e 65 64 | 70 2c 20 4f 50 54 41 42 |unsigned|p, OPTAB|
|00002e40| 5f 57 49 44 45 4e 29 3b | 0d 0d 20 20 2f 2a 20 46 |_WIDEN);|.. /* F|
|00002e50| 6f 72 20 75 6e 73 69 67 | 6e 65 64 20 6f 70 65 72 |or unsig|ned oper|
|00002e60| 61 6e 64 73 2c 20 74 72 | 79 20 77 69 64 65 6e 69 |ands, tr|y wideni|
|00002e70| 6e 67 20 74 6f 20 61 6e | 20 75 6e 73 69 67 6e 65 |ng to an| unsigne|
|00002e80| 64 20 69 6e 74 2e 20 20 | 2a 2f 0d 20 20 69 66 20 |d int. |*/. if |
|00002e90| 28 74 65 6d 70 20 3d 3d | 20 30 20 26 26 20 75 6e |(temp ==| 0 && un|
|00002ea0| 73 69 67 6e 65 64 70 29 | 0d 20 20 20 20 74 65 6d |signedp)|. tem|
|00002eb0| 70 20 3d 20 65 78 70 61 | 6e 64 5f 62 69 6e 6f 70 |p = expa|nd_binop|
|00002ec0| 20 28 6d 6f 64 65 2c 20 | 75 6f 70 74 61 62 2c 20 | (mode, |uoptab, |
|00002ed0| 6f 70 30 2c 20 6f 70 31 | 2c 20 74 61 72 67 65 74 |op0, op1|, target|
|00002ee0| 2c 0d 09 09 09 20 75 6e | 73 69 67 6e 65 64 70 2c |,.... un|signedp,|
|00002ef0| 20 4f 50 54 41 42 5f 57 | 49 44 45 4e 29 3b 0d 20 | OPTAB_W|IDEN);. |
|00002f00| 20 69 66 20 28 74 65 6d | 70 20 7c 7c 20 6d 65 74 | if (tem|p || met|
|00002f10| 68 6f 64 73 20 3d 3d 20 | 4f 50 54 41 42 5f 57 49 |hods == |OPTAB_WI|
|00002f20| 44 45 4e 29 0d 20 20 20 | 20 72 65 74 75 72 6e 20 |DEN). | return |
|00002f30| 74 65 6d 70 3b 0d 0d 20 | 20 2f 2a 20 55 73 65 20 |temp;.. | /* Use |
|00002f40| 74 68 65 20 72 69 67 68 | 74 20 77 69 64 74 68 20 |the righ|t width |
|00002f50| 6c 69 62 20 63 61 6c 6c | 20 69 66 20 74 68 61 74 |lib call| if that|
|00002f60| 20 65 78 69 73 74 73 2e | 20 20 2a 2f 0d 20 20 74 | exists.| */. t|
|00002f70| 65 6d 70 20 3d 20 65 78 | 70 61 6e 64 5f 62 69 6e |emp = ex|pand_bin|
|00002f80| 6f 70 20 28 6d 6f 64 65 | 2c 20 64 69 72 65 63 74 |op (mode|, direct|
|00002f90| 5f 6f 70 74 61 62 2c 20 | 6f 70 30 2c 20 6f 70 31 |_optab, |op0, op1|
|00002fa0| 2c 20 74 61 72 67 65 74 | 2c 20 75 6e 73 69 67 6e |, target|, unsign|
|00002fb0| 65 64 70 2c 20 4f 50 54 | 41 42 5f 4c 49 42 29 3b |edp, OPT|AB_LIB);|
|00002fc0| 0d 20 20 69 66 20 28 74 | 65 6d 70 20 7c 7c 20 6d |. if (t|emp || m|
|00002fd0| 65 74 68 6f 64 73 20 3d | 3d 20 4f 50 54 41 42 5f |ethods =|= OPTAB_|
|00002fe0| 4c 49 42 29 0d 20 20 20 | 20 72 65 74 75 72 6e 20 |LIB). | return |
|00002ff0| 74 65 6d 70 3b 0d 0d 20 | 20 2f 2a 20 4d 75 73 74 |temp;.. | /* Must|
|00003000| 20 77 69 64 65 6e 20 61 | 6e 64 20 75 73 65 20 61 | widen a|nd use a|
|00003010| 20 6c 69 62 20 63 61 6c | 6c 2c 20 75 73 65 20 65 | lib cal|l, use e|
|00003020| 69 74 68 65 72 20 73 69 | 67 6e 65 64 20 6f 72 20 |ither si|gned or |
|00003030| 75 6e 73 69 67 6e 65 64 | 2e 20 20 2a 2f 0d 20 20 |unsigned|. */. |
|00003040| 74 65 6d 70 20 3d 20 65 | 78 70 61 6e 64 5f 62 69 |temp = e|xpand_bi|
|00003050| 6e 6f 70 20 28 6d 6f 64 | 65 2c 20 26 77 69 64 65 |nop (mod|e, &wide|
|00003060| 5f 73 6f 70 74 61 62 2c | 20 6f 70 30 2c 20 6f 70 |_soptab,| op0, op|
|00003070| 31 2c 20 74 61 72 67 65 | 74 2c 0d 09 09 20 20 20 |1, targe|t,... |
|00003080| 20 20 20 20 75 6e 73 69 | 67 6e 65 64 70 2c 20 6d | unsi|gnedp, m|
|00003090| 65 74 68 6f 64 73 29 3b | 0d 20 20 69 66 20 28 74 |ethods);|. if (t|
|000030a0| 65 6d 70 20 21 3d 20 30 | 29 0d 20 20 20 20 72 65 |emp != 0|). re|
|000030b0| 74 75 72 6e 20 74 65 6d | 70 3b 0d 20 20 69 66 20 |turn tem|p;. if |
|000030c0| 28 75 6e 73 69 67 6e 65 | 64 70 29 0d 20 20 20 20 |(unsigne|dp). |
|000030d0| 72 65 74 75 72 6e 20 65 | 78 70 61 6e 64 5f 62 69 |return e|xpand_bi|
|000030e0| 6e 6f 70 20 28 6d 6f 64 | 65 2c 20 75 6f 70 74 61 |nop (mod|e, uopta|
|000030f0| 62 2c 20 6f 70 30 2c 20 | 6f 70 31 2c 20 74 61 72 |b, op0, |op1, tar|
|00003100| 67 65 74 2c 0d 09 09 09 | 20 75 6e 73 69 67 6e 65 |get,....| unsigne|
|00003110| 64 70 2c 20 6d 65 74 68 | 6f 64 73 29 3b 0d 20 20 |dp, meth|ods);. |
|00003120| 72 65 74 75 72 6e 20 30 | 3b 0d 7d 0d 0c 0d 2f 2a |return 0|;.}.../*|
|00003130| 20 47 65 6e 65 72 61 74 | 65 20 63 6f 64 65 20 74 | Generat|e code t|
|00003140| 6f 20 70 65 72 66 6f 72 | 6d 20 61 6e 20 6f 70 65 |o perfor|m an ope|
|00003150| 72 61 74 69 6f 6e 20 73 | 70 65 63 69 66 69 65 64 |ration s|pecified|
|00003160| 20 62 79 20 42 49 4e 4f | 50 54 41 42 0d 20 20 20 | by BINO|PTAB. |
|00003170| 6f 6e 20 6f 70 65 72 61 | 6e 64 73 20 4f 50 30 20 |on opera|nds OP0 |
|00003180| 61 6e 64 20 4f 50 31 2c | 20 77 69 74 68 20 74 77 |and OP1,| with tw|
|00003190| 6f 20 72 65 73 75 6c 74 | 73 20 74 6f 20 54 41 52 |o result|s to TAR|
|000031a0| 47 31 20 61 6e 64 20 54 | 41 52 47 32 2e 0d 20 20 |G1 and T|ARG2.. |
|000031b0| 20 57 65 20 61 73 73 75 | 6d 65 20 74 68 61 74 20 | We assu|me that |
|000031c0| 74 68 65 20 6f 72 64 65 | 72 20 6f 66 20 74 68 65 |the orde|r of the|
|000031d0| 20 6f 70 65 72 61 6e 64 | 73 20 66 6f 72 20 74 68 | operand|s for th|
|000031e0| 65 20 69 6e 73 74 72 75 | 63 74 69 6f 6e 0d 20 20 |e instru|ction. |
|000031f0| 20 69 73 20 54 41 52 47 | 30 2c 20 4f 50 30 2c 20 | is TARG|0, OP0, |
|00003200| 4f 50 31 2c 20 54 41 52 | 47 31 2c 20 77 68 69 63 |OP1, TAR|G1, whic|
|00003210| 68 20 77 6f 75 6c 64 20 | 66 69 74 20 61 20 70 61 |h would |fit a pa|
|00003220| 74 74 65 72 6e 20 6c 69 | 6b 65 0d 20 20 20 5b 28 |ttern li|ke. [(|
|00003230| 73 65 74 20 54 41 52 47 | 30 20 28 6f 70 65 72 61 |set TARG|0 (opera|
|00003240| 74 65 20 4f 50 30 20 4f | 50 31 29 29 20 28 73 65 |te OP0 O|P1)) (se|
|00003250| 74 20 54 41 52 47 31 20 | 28 6f 70 65 72 61 74 65 |t TARG1 |(operate|
|00003260| 20 2e 2e 2e 29 29 5d 2e | 0d 0d 20 20 20 45 69 74 | ...))].|.. Eit|
|00003270| 68 65 72 20 54 41 52 47 | 30 20 6f 72 20 54 41 52 |her TARG|0 or TAR|
|00003280| 47 31 20 6d 61 79 20 62 | 65 20 7a 65 72 6f 2c 20 |G1 may b|e zero, |
|00003290| 62 75 74 20 77 68 61 74 | 20 74 68 61 74 20 6d 65 |but what| that me|
|000032a0| 61 6e 73 20 69 73 20 74 | 68 61 74 0d 20 20 20 74 |ans is t|hat. t|
|000032b0| 68 61 74 20 72 65 73 75 | 6c 74 20 69 73 20 6e 6f |hat resu|lt is no|
|000032c0| 74 20 61 63 74 75 61 6c | 6c 79 20 77 61 6e 74 65 |t actual|ly wante|
|000032d0| 64 2e 20 20 57 65 20 77 | 69 6c 6c 20 67 65 6e 65 |d. We w|ill gene|
|000032e0| 72 61 74 65 20 69 74 20 | 69 6e 74 6f 0d 20 20 20 |rate it |into. |
|000032f0| 61 20 64 75 6d 6d 79 20 | 70 73 65 75 64 6f 2d 72 |a dummy |pseudo-r|
|00003300| 65 67 20 61 6e 64 20 64 | 69 73 63 61 72 64 20 69 |eg and d|iscard i|
|00003310| 74 2e 20 20 54 68 65 79 | 20 6d 61 79 20 6e 6f 74 |t. They| may not|
|00003320| 20 62 6f 74 68 20 62 65 | 20 7a 65 72 6f 2e 0d 0d | both be| zero...|
|00003330| 20 20 20 52 65 74 75 72 | 6e 73 20 31 20 69 66 20 | Retur|ns 1 if |
|00003340| 74 68 69 73 20 6f 70 65 | 72 61 74 69 6f 6e 20 63 |this ope|ration c|
|00003350| 61 6e 20 62 65 20 70 65 | 72 66 6f 72 6d 65 64 3b |an be pe|rformed;|
|00003360| 20 30 20 69 66 20 6e 6f | 74 2e 20 20 2a 2f 0d 0d | 0 if no|t. */..|
|00003370| 69 6e 74 0d 65 78 70 61 | 6e 64 5f 74 77 6f 76 61 |int.expa|nd_twova|
|00003380| 6c 5f 62 69 6e 6f 70 20 | 28 62 69 6e 6f 70 74 61 |l_binop |(binopta|
|00003390| 62 2c 20 6f 70 30 2c 20 | 6f 70 31 2c 20 74 61 72 |b, op0, |op1, tar|
|000033a0| 67 30 2c 20 74 61 72 67 | 31 2c 20 75 6e 73 69 67 |g0, targ|1, unsig|
|000033b0| 6e 65 64 70 29 0d 20 20 | 20 20 20 6f 70 74 61 62 |nedp). | optab|
|000033c0| 20 62 69 6e 6f 70 74 61 | 62 3b 0d 20 20 20 20 20 | binopta|b;. |
|000033d0| 72 74 78 20 6f 70 30 2c | 20 6f 70 31 3b 0d 20 20 |rtx op0,| op1;. |
|000033e0| 20 20 20 72 74 78 20 74 | 61 72 67 30 2c 20 74 61 | rtx t|arg0, ta|
|000033f0| 72 67 31 3b 0d 20 20 20 | 20 20 69 6e 74 20 75 6e |rg1;. | int un|
|00003400| 73 69 67 6e 65 64 70 3b | 0d 7b 0d 20 20 65 6e 75 |signedp;|.{. enu|
|00003410| 6d 20 6d 61 63 68 69 6e | 65 5f 6d 6f 64 65 20 6d |m machin|e_mode m|
|00003420| 6f 64 65 20 3d 20 47 45 | 54 5f 4d 4f 44 45 20 28 |ode = GE|T_MODE (|
|00003430| 74 61 72 67 30 20 3f 20 | 74 61 72 67 30 20 3a 20 |targ0 ? |targ0 : |
|00003440| 74 61 72 67 31 29 3b 0d | 20 20 65 6e 75 6d 20 6d |targ1);.| enum m|
|00003450| 6f 64 65 5f 63 6c 61 73 | 73 20 63 6c 61 73 73 3b |ode_clas|s class;|
|00003460| 0d 20 20 65 6e 75 6d 20 | 6d 61 63 68 69 6e 65 5f |. enum |machine_|
|00003470| 6d 6f 64 65 20 77 69 64 | 65 72 5f 6d 6f 64 65 3b |mode wid|er_mode;|
|00003480| 0d 0d 20 20 63 6c 61 73 | 73 20 3d 20 47 45 54 5f |.. clas|s = GET_|
|00003490| 4d 4f 44 45 5f 43 4c 41 | 53 53 20 28 6d 6f 64 65 |MODE_CLA|SS (mode|
|000034a0| 29 3b 0d 0d 20 20 6f 70 | 30 20 3d 20 70 72 6f 74 |);.. op|0 = prot|
|000034b0| 65 63 74 5f 66 72 6f 6d | 5f 71 75 65 75 65 20 28 |ect_from|_queue (|
|000034c0| 6f 70 30 2c 20 30 29 3b | 0d 20 20 6f 70 31 20 3d |op0, 0);|. op1 =|
|000034d0| 20 70 72 6f 74 65 63 74 | 5f 66 72 6f 6d 5f 71 75 | protect|_from_qu|
|000034e0| 65 75 65 20 28 6f 70 31 | 2c 20 30 29 3b 0d 0d 20 |eue (op1|, 0);.. |
|000034f0| 20 69 66 20 28 66 6c 61 | 67 5f 66 6f 72 63 65 5f | if (fla|g_force_|
|00003500| 6d 65 6d 29 0d 20 20 20 | 20 7b 0d 20 20 20 20 20 |mem). | {. |
|00003510| 20 6f 70 30 20 3d 20 66 | 6f 72 63 65 5f 6e 6f 74 | op0 = f|orce_not|
|00003520| 5f 6d 65 6d 20 28 6f 70 | 30 29 3b 0d 20 20 20 20 |_mem (op|0);. |
|00003530| 20 20 6f 70 31 20 3d 20 | 66 6f 72 63 65 5f 6e 6f | op1 = |force_no|
|00003540| 74 5f 6d 65 6d 20 28 6f | 70 31 29 3b 0d 20 20 20 |t_mem (o|p1);. |
|00003550| 20 7d 0d 0d 20 20 69 66 | 20 28 74 61 72 67 30 29 | }.. if| (targ0)|
|00003560| 0d 20 20 20 20 74 61 72 | 67 30 20 3d 20 70 72 6f |. tar|g0 = pro|
|00003570| 74 65 63 74 5f 66 72 6f | 6d 5f 71 75 65 75 65 20 |tect_fro|m_queue |
|00003580| 28 74 61 72 67 30 2c 20 | 31 29 3b 0d 20 20 65 6c |(targ0, |1);. el|
|00003590| 73 65 0d 20 20 20 20 74 | 61 72 67 30 20 3d 20 67 |se. t|arg0 = g|
|000035a0| 65 6e 5f 72 65 67 5f 72 | 74 78 20 28 6d 6f 64 65 |en_reg_r|tx (mode|
|000035b0| 29 3b 0d 20 20 69 66 20 | 28 74 61 72 67 31 29 0d |);. if |(targ1).|
|000035c0| 20 20 20 20 74 61 72 67 | 31 20 3d 20 70 72 6f 74 | targ|1 = prot|
|000035d0| 65 63 74 5f 66 72 6f 6d | 5f 71 75 65 75 65 20 28 |ect_from|_queue (|
|000035e0| 74 61 72 67 31 2c 20 31 | 29 3b 0d 20 20 65 6c 73 |targ1, 1|);. els|
|000035f0| 65 0d 20 20 20 20 74 61 | 72 67 31 20 3d 20 67 65 |e. ta|rg1 = ge|
|00003600| 6e 5f 72 65 67 5f 72 74 | 78 20 28 6d 6f 64 65 29 |n_reg_rt|x (mode)|
|00003610| 3b 0d 0d 20 20 69 66 20 | 28 62 69 6e 6f 70 74 61 |;.. if |(binopta|
|00003620| 62 2d 3e 68 61 6e 64 6c | 65 72 73 5b 28 69 6e 74 |b->handl|ers[(int|
|00003630| 29 20 6d 6f 64 65 5d 2e | 69 6e 73 6e 5f 63 6f 64 |) mode].|insn_cod|
|00003640| 65 20 21 3d 20 43 4f 44 | 45 5f 46 4f 52 5f 6e 6f |e != COD|E_FOR_no|
|00003650| 74 68 69 6e 67 29 0d 20 | 20 20 20 7b 0d 20 20 20 |thing). | {. |
|00003660| 20 20 20 65 6d 69 74 5f | 69 6e 73 6e 20 28 47 45 | emit_|insn (GE|
|00003670| 4e 5f 46 43 4e 20 28 62 | 69 6e 6f 70 74 61 62 2d |N_FCN (b|inoptab-|
|00003680| 3e 68 61 6e 64 6c 65 72 | 73 5b 28 69 6e 74 29 20 |>handler|s[(int) |
|00003690| 6d 6f 64 65 5d 2e 69 6e | 73 6e 5f 63 6f 64 65 29 |mode].in|sn_code)|
|000036a0| 0d 09 09 20 28 74 61 72 | 67 30 2c 20 6f 70 30 2c |... (tar|g0, op0,|
|000036b0| 20 6f 70 31 2c 20 74 61 | 72 67 31 29 29 3b 0d 20 | op1, ta|rg1));. |
|000036c0| 20 20 20 20 20 72 65 74 | 75 72 6e 20 31 3b 0d 20 | ret|urn 1;. |
|000036d0| 20 20 20 7d 0d 0d 20 20 | 2f 2a 20 49 74 20 63 61 | }.. |/* It ca|
|000036e0| 6e 27 74 20 62 65 20 64 | 6f 6e 65 20 69 6e 20 74 |n't be d|one in t|
|000036f0| 68 69 73 20 6d 6f 64 65 | 2e 20 20 43 61 6e 20 77 |his mode|. Can w|
|00003700| 65 20 64 6f 20 69 74 20 | 69 6e 20 61 20 77 69 64 |e do it |in a wid|
|00003710| 65 72 20 6d 6f 64 65 3f | 20 20 2a 2f 0d 0d 20 20 |er mode?| */.. |
|00003720| 69 66 20 28 63 6c 61 73 | 73 20 3d 3d 20 4d 4f 44 |if (clas|s == MOD|
|00003730| 45 5f 49 4e 54 20 7c 7c | 20 63 6c 61 73 73 20 3d |E_INT ||| class =|
|00003740| 3d 20 4d 4f 44 45 5f 46 | 4c 4f 41 54 29 0d 20 20 |= MODE_F|LOAT). |
|00003750| 20 20 7b 0d 20 20 20 20 | 20 20 66 6f 72 20 28 77 | {. | for (w|
|00003760| 69 64 65 72 5f 6d 6f 64 | 65 20 3d 20 49 4e 43 5f |ider_mod|e = INC_|
|00003770| 4d 4f 44 45 20 28 6d 6f | 64 65 29 3b 0d 09 20 20 |MODE (mo|de);.. |
|00003780| 20 28 28 69 6e 74 29 20 | 77 69 64 65 72 5f 6d 6f | ((int) |wider_mo|
|00003790| 64 65 20 3c 20 28 69 6e | 74 29 20 4d 41 58 5f 4d |de < (in|t) MAX_M|
|000037a0| 41 43 48 49 4e 45 5f 4d | 4f 44 45 0d 09 20 20 20 |ACHINE_M|ODE.. |
|000037b0| 20 26 26 20 47 45 54 5f | 4d 4f 44 45 5f 43 4c 41 | && GET_|MODE_CLA|
|000037c0| 53 53 20 28 77 69 64 65 | 72 5f 6d 6f 64 65 29 20 |SS (wide|r_mode) |
|000037d0| 3d 3d 20 63 6c 61 73 73 | 29 3b 0d 09 20 20 20 77 |== class|);.. w|
|000037e0| 69 64 65 72 5f 6d 6f 64 | 65 20 3d 20 49 4e 43 5f |ider_mod|e = INC_|
|000037f0| 4d 4f 44 45 20 28 77 69 | 64 65 72 5f 6d 6f 64 65 |MODE (wi|der_mode|
|00003800| 29 29 0d 09 7b 0d 09 20 | 20 69 66 20 28 62 69 6e |))..{.. | if (bin|
|00003810| 6f 70 74 61 62 2d 3e 68 | 61 6e 64 6c 65 72 73 5b |optab->h|andlers[|
|00003820| 28 69 6e 74 29 20 77 69 | 64 65 72 5f 6d 6f 64 65 |(int) wi|der_mode|
|00003830| 5d 2e 69 6e 73 6e 5f 63 | 6f 64 65 0d 09 20 20 20 |].insn_c|ode.. |
|00003840| 20 20 20 21 3d 20 43 4f | 44 45 5f 46 4f 52 5f 6e | != CO|DE_FOR_n|
|00003850| 6f 74 68 69 6e 67 29 0d | 09 20 20 20 20 7b 0d 09 |othing).|. {..|
|00003860| 20 20 20 20 20 20 65 78 | 70 61 6e 64 5f 74 77 6f | ex|pand_two|
|00003870| 76 61 6c 5f 62 69 6e 6f | 70 5f 63 6f 6e 76 65 72 |val_bino|p_conver|
|00003880| 74 20 28 62 69 6e 6f 70 | 74 61 62 2c 20 77 69 64 |t (binop|tab, wid|
|00003890| 65 72 5f 6d 6f 64 65 2c | 20 6f 70 30 2c 20 6f 70 |er_mode,| op0, op|
|000038a0| 31 2c 0d 09 09 09 09 09 | 20 20 20 74 61 72 67 30 |1,......| targ0|
|000038b0| 2c 20 74 61 72 67 31 2c | 20 75 6e 73 69 67 6e 65 |, targ1,| unsigne|
|000038c0| 64 70 29 3b 0d 09 20 20 | 20 20 20 20 72 65 74 75 |dp);.. | retu|
|000038d0| 72 6e 20 31 3b 0d 09 20 | 20 20 20 7d 0d 09 7d 0d |rn 1;.. | }..}.|
|000038e0| 20 20 20 20 7d 0d 20 20 | 72 65 74 75 72 6e 20 30 | }. |return 0|
|000038f0| 3b 0d 7d 0d 0d 69 6e 74 | 0d 65 78 70 61 6e 64 5f |;.}..int|.expand_|
|00003900| 74 77 6f 76 61 6c 5f 62 | 69 6e 6f 70 5f 63 6f 6e |twoval_b|inop_con|
|00003910| 76 65 72 74 20 28 62 69 | 6e 6f 70 74 61 62 2c 20 |vert (bi|noptab, |
|00003920| 6d 6f 64 65 2c 20 6f 70 | 30 2c 20 6f 70 31 2c 20 |mode, op|0, op1, |
|00003930| 74 61 72 67 30 2c 20 74 | 61 72 67 31 2c 20 75 6e |targ0, t|arg1, un|
|00003940| 73 69 67 6e 65 64 70 29 | 0d 20 20 20 20 20 72 65 |signedp)|. re|
|00003950| 67 69 73 74 65 72 20 6f | 70 74 61 62 20 62 69 6e |gister o|ptab bin|
|00003960| 6f 70 74 61 62 3b 0d 20 | 20 20 20 20 72 65 67 69 |optab;. | regi|
|00003970| 73 74 65 72 20 72 74 78 | 20 6f 70 30 2c 20 6f 70 |ster rtx| op0, op|
|00003980| 31 2c 20 74 61 72 67 30 | 2c 20 74 61 72 67 31 3b |1, targ0|, targ1;|
|00003990| 0d 20 20 20 20 20 69 6e | 74 20 75 6e 73 69 67 6e |. in|t unsign|
|000039a0| 65 64 70 3b 0d 7b 0d 20 | 20 72 65 67 69 73 74 65 |edp;.{. | registe|
|000039b0| 72 20 72 74 78 20 74 30 | 20 3d 20 67 65 6e 5f 72 |r rtx t0| = gen_r|
|000039c0| 65 67 5f 72 74 78 20 28 | 53 49 6d 6f 64 65 29 3b |eg_rtx (|SImode);|
|000039d0| 0d 20 20 72 65 67 69 73 | 74 65 72 20 72 74 78 20 |. regis|ter rtx |
|000039e0| 74 31 20 3d 20 67 65 6e | 5f 72 65 67 5f 72 74 78 |t1 = gen|_reg_rtx|
|000039f0| 20 28 53 49 6d 6f 64 65 | 29 3b 0d 20 20 72 65 67 | (SImode|);. reg|
|00003a00| 69 73 74 65 72 20 72 74 | 78 20 74 65 6d 70 3b 0d |ister rt|x temp;.|
|00003a10| 0d 20 20 74 65 6d 70 20 | 3d 20 67 65 6e 5f 72 65 |. temp |= gen_re|
|00003a20| 67 5f 72 74 78 20 28 53 | 49 6d 6f 64 65 29 3b 0d |g_rtx (S|Imode);.|
|00003a30| 20 20 63 6f 6e 76 65 72 | 74 5f 6d 6f 76 65 20 28 | conver|t_move (|
|00003a40| 74 65 6d 70 2c 20 6f 70 | 30 2c 20 75 6e 73 69 67 |temp, op|0, unsig|
|00003a50| 6e 65 64 70 29 3b 0d 20 | 20 6f 70 30 20 3d 20 74 |nedp);. | op0 = t|
|00003a60| 65 6d 70 3b 0d 20 20 74 | 65 6d 70 20 3d 20 67 65 |emp;. t|emp = ge|
|00003a70| 6e 5f 72 65 67 5f 72 74 | 78 20 28 53 49 6d 6f 64 |n_reg_rt|x (SImod|
|00003a80| 65 29 3b 0d 20 20 63 6f | 6e 76 65 72 74 5f 6d 6f |e);. co|nvert_mo|
|00003a90| 76 65 20 28 74 65 6d 70 | 2c 20 6f 70 31 2c 20 75 |ve (temp|, op1, u|
|00003aa0| 6e 73 69 67 6e 65 64 70 | 29 3b 0d 20 20 6f 70 31 |nsignedp|);. op1|
|00003ab0| 20 3d 20 74 65 6d 70 3b | 0d 0d 20 20 65 78 70 61 | = temp;|.. expa|
|00003ac0| 6e 64 5f 74 77 6f 76 61 | 6c 5f 62 69 6e 6f 70 20 |nd_twova|l_binop |
|00003ad0| 28 62 69 6e 6f 70 74 61 | 62 2c 20 6f 70 30 2c 20 |(binopta|b, op0, |
|00003ae0| 6f 70 31 2c 20 74 30 2c | 20 74 31 2c 20 75 6e 73 |op1, t0,| t1, uns|
|00003af0| 69 67 6e 65 64 70 29 3b | 0d 20 20 63 6f 6e 76 65 |ignedp);|. conve|
|00003b00| 72 74 5f 6d 6f 76 65 20 | 28 74 61 72 67 30 2c 20 |rt_move |(targ0, |
|00003b10| 74 30 2c 20 75 6e 73 69 | 67 6e 65 64 70 29 3b 0d |t0, unsi|gnedp);.|
|00003b20| 20 20 63 6f 6e 76 65 72 | 74 5f 6d 6f 76 65 20 28 | conver|t_move (|
|00003b30| 74 61 72 67 31 2c 20 74 | 31 2c 20 75 6e 73 69 67 |targ1, t|1, unsig|
|00003b40| 6e 65 64 70 29 3b 0d 20 | 20 72 65 74 75 72 6e 20 |nedp);. | return |
|00003b50| 31 3b 0d 7d 0d 0c 0d 2f | 2a 20 47 65 6e 65 72 61 |1;.}.../|* Genera|
|00003b60| 74 65 20 63 6f 64 65 20 | 74 6f 20 70 65 72 66 6f |te code |to perfo|
|00003b70| 72 6d 20 61 6e 20 6f 70 | 65 72 61 74 69 6f 6e 20 |rm an op|eration |
|00003b80| 73 70 65 63 69 66 69 65 | 64 20 62 79 20 55 4e 4f |specifie|d by UNO|
|00003b90| 50 54 41 42 0d 20 20 20 | 6f 6e 20 6f 70 65 72 61 |PTAB. |on opera|
|00003ba0| 6e 64 20 4f 50 30 2c 20 | 77 69 74 68 20 72 65 73 |nd OP0, |with res|
|00003bb0| 75 6c 74 20 68 61 76 69 | 6e 67 20 6d 61 63 68 69 |ult havi|ng machi|
|00003bc0| 6e 65 2d 6d 6f 64 65 20 | 4d 4f 44 45 2e 0d 0d 20 |ne-mode |MODE... |
|00003bd0| 20 20 55 4e 53 49 47 4e | 45 44 50 20 69 73 20 66 | UNSIGN|EDP is f|
|00003be0| 6f 72 20 74 68 65 20 63 | 61 73 65 20 77 68 65 72 |or the c|ase wher|
|00003bf0| 65 20 77 65 20 68 61 76 | 65 20 74 6f 20 77 69 64 |e we hav|e to wid|
|00003c00| 65 6e 20 74 68 65 20 6f | 70 65 72 61 6e 64 73 0d |en the o|perands.|
|00003c10| 20 20 20 74 6f 20 70 65 | 72 66 6f 72 6d 20 74 68 | to pe|rform th|
|00003c20| 65 20 6f 70 65 72 61 74 | 69 6f 6e 2e 20 20 49 74 |e operat|ion. It|
|00003c30| 20 73 61 79 73 20 74 6f | 20 75 73 65 20 7a 65 72 | says to| use zer|
|00003c40| 6f 2d 65 78 74 65 6e 73 | 69 6f 6e 2e 0d 0d 20 20 |o-extens|ion... |
|00003c50| 20 49 66 20 54 41 52 47 | 45 54 20 69 73 20 6e 6f | If TARG|ET is no|
|00003c60| 6e 7a 65 72 6f 2c 20 74 | 68 65 20 76 61 6c 75 65 |nzero, t|he value|
|00003c70| 0d 20 20 20 69 73 20 67 | 65 6e 65 72 61 74 65 64 |. is g|enerated|
|00003c80| 20 74 68 65 72 65 2c 20 | 69 66 20 69 74 20 69 73 | there, |if it is|
|00003c90| 20 63 6f 6e 76 65 6e 69 | 65 6e 74 20 74 6f 20 64 | conveni|ent to d|
|00003ca0| 6f 20 73 6f 2e 0d 20 20 | 20 49 6e 20 61 6c 6c 20 |o so.. | In all |
|00003cb0| 63 61 73 65 73 20 61 6e | 20 72 74 78 20 69 73 20 |cases an| rtx is |
|00003cc0| 72 65 74 75 72 6e 65 64 | 20 66 6f 72 20 74 68 65 |returned| for the|
|00003cd0| 20 6c 6f 63 75 73 20 6f | 66 20 74 68 65 20 76 61 | locus o|f the va|
|00003ce0| 6c 75 65 3b 0d 20 20 20 | 74 68 69 73 20 6d 61 79 |lue;. |this may|
|00003cf0| 20 6f 72 20 6d 61 79 20 | 6e 6f 74 20 62 65 20 54 | or may |not be T|
|00003d00| 41 52 47 45 54 2e 20 20 | 2a 2f 0d 0d 72 74 78 0d |ARGET. |*/..rtx.|
|00003d10| 65 78 70 61 6e 64 5f 75 | 6e 6f 70 20 28 6d 6f 64 |expand_u|nop (mod|
|00003d20| 65 2c 20 75 6e 6f 70 74 | 61 62 2c 20 6f 70 30 2c |e, unopt|ab, op0,|
|00003d30| 20 74 61 72 67 65 74 2c | 20 75 6e 73 69 67 6e 65 | target,| unsigne|
|00003d40| 64 70 29 0d 20 20 20 20 | 20 65 6e 75 6d 20 6d 61 |dp). | enum ma|
|00003d50| 63 68 69 6e 65 5f 6d 6f | 64 65 20 6d 6f 64 65 3b |chine_mo|de mode;|
|00003d60| 0d 20 20 20 20 20 6f 70 | 74 61 62 20 75 6e 6f 70 |. op|tab unop|
|00003d70| 74 61 62 3b 0d 20 20 20 | 20 20 72 74 78 20 6f 70 |tab;. | rtx op|
|00003d80| 30 3b 0d 20 20 20 20 20 | 72 74 78 20 74 61 72 67 |0;. |rtx targ|
|00003d90| 65 74 3b 0d 20 20 20 20 | 20 69 6e 74 20 75 6e 73 |et;. | int uns|
|00003da0| 69 67 6e 65 64 70 3b 0d | 7b 0d 20 20 65 6e 75 6d |ignedp;.|{. enum|
|00003db0| 20 6d 6f 64 65 5f 63 6c | 61 73 73 20 63 6c 61 73 | mode_cl|ass clas|
|00003dc0| 73 3b 0d 20 20 65 6e 75 | 6d 20 6d 61 63 68 69 6e |s;. enu|m machin|
|00003dd0| 65 5f 6d 6f 64 65 20 77 | 69 64 65 72 5f 6d 6f 64 |e_mode w|ider_mod|
|00003de0| 65 3b 0d 20 20 72 65 67 | 69 73 74 65 72 20 72 74 |e;. reg|ister rt|
|00003df0| 78 20 74 65 6d 70 3b 0d | 0d 20 20 63 6c 61 73 73 |x temp;.|. class|
|00003e00| 20 3d 20 47 45 54 5f 4d | 4f 44 45 5f 43 4c 41 53 | = GET_M|ODE_CLAS|
|00003e10| 53 20 28 6d 6f 64 65 29 | 3b 0d 0d 20 20 6f 70 30 |S (mode)|;.. op0|
|00003e20| 20 3d 20 70 72 6f 74 65 | 63 74 5f 66 72 6f 6d 5f | = prote|ct_from_|
|00003e30| 71 75 65 75 65 20 28 6f | 70 30 2c 20 30 29 3b 0d |queue (o|p0, 0);.|
|00003e40| 0d 20 20 69 66 20 28 66 | 6c 61 67 5f 66 6f 72 63 |. if (f|lag_forc|
|00003e50| 65 5f 6d 65 6d 29 0d 20 | 20 20 20 7b 0d 20 20 20 |e_mem). | {. |
|00003e60| 20 20 20 6f 70 30 20 3d | 20 66 6f 72 63 65 5f 6e | op0 =| force_n|
|00003e70| 6f 74 5f 6d 65 6d 20 28 | 6f 70 30 29 3b 0d 20 20 |ot_mem (|op0);. |
|00003e80| 20 20 7d 0d 0d 20 20 69 | 66 20 28 74 61 72 67 65 | }.. i|f (targe|
|00003e90| 74 29 0d 20 20 20 20 74 | 61 72 67 65 74 20 3d 20 |t). t|arget = |
|00003ea0| 70 72 6f 74 65 63 74 5f | 66 72 6f 6d 5f 71 75 65 |protect_|from_que|
|00003eb0| 75 65 20 28 74 61 72 67 | 65 74 2c 20 31 29 3b 0d |ue (targ|et, 1);.|
|00003ec0| 0d 20 20 69 66 20 28 75 | 6e 6f 70 74 61 62 2d 3e |. if (u|noptab->|
|00003ed0| 68 61 6e 64 6c 65 72 73 | 5b 28 69 6e 74 29 20 6d |handlers|[(int) m|
|00003ee0| 6f 64 65 5d 2e 69 6e 73 | 6e 5f 63 6f 64 65 20 21 |ode].ins|n_code !|
|00003ef0| 3d 20 43 4f 44 45 5f 46 | 4f 52 5f 6e 6f 74 68 69 |= CODE_F|OR_nothi|
|00003f00| 6e 67 29 0d 20 20 20 20 | 7b 0d 20 20 20 20 20 20 |ng). |{. |
|00003f10| 69 6e 74 20 69 63 6f 64 | 65 20 3d 20 28 69 6e 74 |int icod|e = (int|
|00003f20| 29 20 75 6e 6f 70 74 61 | 62 2d 3e 68 61 6e 64 6c |) unopta|b->handl|
|00003f30| 65 72 73 5b 28 69 6e 74 | 29 20 6d 6f 64 65 5d 2e |ers[(int|) mode].|
|00003f40| 69 6e 73 6e 5f 63 6f 64 | 65 3b 0d 20 20 20 20 20 |insn_cod|e;. |
|00003f50| 20 65 6e 75 6d 20 6d 61 | 63 68 69 6e 65 5f 6d 6f | enum ma|chine_mo|
|00003f60| 64 65 20 6d 6f 64 65 30 | 20 3d 20 69 6e 73 6e 5f |de mode0| = insn_|
|00003f70| 6f 70 65 72 61 6e 64 5f | 6d 6f 64 65 5b 69 63 6f |operand_|mode[ico|
|00003f80| 64 65 5d 5b 31 5d 3b 0d | 0d 20 20 20 20 20 20 69 |de][1];.|. i|
|00003f90| 66 20 28 74 61 72 67 65 | 74 29 0d 09 74 65 6d 70 |f (targe|t)..temp|
|00003fa0| 20 3d 20 74 61 72 67 65 | 74 3b 0d 20 20 20 20 20 | = targe|t;. |
|00003fb0| 20 65 6c 73 65 0d 09 74 | 65 6d 70 20 3d 20 67 65 | else..t|emp = ge|
|00003fc0| 6e 5f 72 65 67 5f 72 74 | 78 20 28 6d 6f 64 65 29 |n_reg_rt|x (mode)|
|00003fd0| 3b 0d 0d 20 20 20 20 20 | 20 69 66 20 28 47 45 54 |;.. | if (GET|
|00003fe0| 5f 4d 4f 44 45 20 28 6f | 70 30 29 20 21 3d 20 56 |_MODE (o|p0) != V|
|00003ff0| 4f 49 44 6d 6f 64 65 0d | 09 20 20 26 26 20 47 45 |OIDmode.|. && GE|
|00004000| 54 5f 4d 4f 44 45 20 28 | 6f 70 30 29 20 21 3d 20 |T_MODE (|op0) != |
|00004010| 6d 6f 64 65 30 29 0d 09 | 6f 70 30 20 3d 20 63 6f |mode0)..|op0 = co|
|00004020| 6e 76 65 72 74 5f 74 6f | 5f 6d 6f 64 65 20 28 6d |nvert_to|_mode (m|
|00004030| 6f 64 65 30 2c 20 6f 70 | 30 2c 20 75 6e 73 69 67 |ode0, op|0, unsig|
|00004040| 6e 65 64 70 29 3b 0d 0d | 20 20 20 20 20 20 2f 2a |nedp);..| /*|
|00004050| 20 4e 6f 77 2c 20 69 66 | 20 69 6e 73 6e 20 72 65 | Now, if| insn re|
|00004060| 71 75 69 72 65 73 20 72 | 65 67 69 73 74 65 72 20 |quires r|egister |
|00004070| 6f 70 65 72 61 6e 64 73 | 2c 20 70 75 74 20 6f 70 |operands|, put op|
|00004080| 65 72 61 6e 64 73 20 69 | 6e 74 6f 20 72 65 67 73 |erands i|nto regs|
|00004090| 2e 20 20 2a 2f 0d 0d 20 | 20 20 20 20 20 69 66 20 |. */.. | if |
|000040a0| 28 21 20 28 2a 69 6e 73 | 6e 5f 6f 70 65 72 61 6e |(! (*ins|n_operan|
|000040b0| 64 5f 70 72 65 64 69 63 | 61 74 65 5b 69 63 6f 64 |d_predic|ate[icod|
|000040c0| 65 5d 5b 31 5d 29 20 28 | 6f 70 30 2c 20 6d 6f 64 |e][1]) (|op0, mod|
|000040d0| 65 30 29 29 0d 09 6f 70 | 30 20 3d 20 66 6f 72 63 |e0))..op|0 = forc|
|000040e0| 65 5f 72 65 67 20 28 6d | 6f 64 65 30 2c 20 6f 70 |e_reg (m|ode0, op|
|000040f0| 30 29 3b 0d 0d 20 20 20 | 20 20 20 69 66 20 28 21 |0);.. | if (!|
|00004100| 20 28 2a 69 6e 73 6e 5f | 6f 70 65 72 61 6e 64 5f | (*insn_|operand_|
|00004110| 70 72 65 64 69 63 61 74 | 65 5b 69 63 6f 64 65 5d |predicat|e[icode]|
|00004120| 5b 30 5d 29 20 28 74 65 | 6d 70 2c 20 6d 6f 64 65 |[0]) (te|mp, mode|
|00004130| 29 29 0d 09 74 65 6d 70 | 20 3d 20 67 65 6e 5f 72 |))..temp| = gen_r|
|00004140| 65 67 5f 72 74 78 20 28 | 6d 6f 64 65 29 3b 0d 0d |eg_rtx (|mode);..|
|00004150| 20 20 20 20 20 20 65 6d | 69 74 5f 69 6e 73 6e 20 | em|it_insn |
|00004160| 28 47 45 4e 5f 46 43 4e | 20 28 69 63 6f 64 65 29 |(GEN_FCN| (icode)|
|00004170| 20 28 74 65 6d 70 2c 20 | 6f 70 30 29 29 3b 0d 20 | (temp, |op0));. |
|00004180| 20 20 20 20 20 72 65 74 | 75 72 6e 20 74 65 6d 70 | ret|urn temp|
|00004190| 3b 0d 20 20 20 20 7d 0d | 20 20 65 6c 73 65 20 69 |;. }.| else i|
|000041a0| 66 20 28 75 6e 6f 70 74 | 61 62 2d 3e 68 61 6e 64 |f (unopt|ab->hand|
|000041b0| 6c 65 72 73 5b 28 69 6e | 74 29 20 6d 6f 64 65 5d |lers[(in|t) mode]|
|000041c0| 2e 6c 69 62 5f 63 61 6c | 6c 29 0d 20 20 20 20 7b |.lib_cal|l). {|
|000041d0| 0d 20 20 20 20 20 20 72 | 74 78 20 69 6e 73 6e 5f |. r|tx insn_|
|000041e0| 62 65 66 6f 72 65 2c 20 | 69 6e 73 6e 5f 6c 61 73 |before, |insn_las|
|000041f0| 74 3b 0d 20 20 20 20 20 | 20 72 74 78 20 66 75 6e |t;. | rtx fun|
|00004200| 65 78 70 20 3d 20 67 65 | 6e 5f 72 74 78 20 28 53 |exp = ge|n_rtx (S|
|00004210| 59 4d 42 4f 4c 5f 52 45 | 46 2c 20 50 6d 6f 64 65 |YMBOL_RE|F, Pmode|
|00004220| 2c 0d 09 09 09 20 20 20 | 20 75 6e 6f 70 74 61 62 |,.... | unoptab|
|00004230| 2d 3e 68 61 6e 64 6c 65 | 72 73 5b 28 69 6e 74 29 |->handle|rs[(int)|
|00004240| 20 6d 6f 64 65 5d 2e 6c | 69 62 5f 63 61 6c 6c 29 | mode].l|ib_call)|
|00004250| 3b 0d 0d 20 20 20 20 20 | 20 2f 2a 20 50 61 73 73 |;.. | /* Pass|
|00004260| 20 74 68 65 20 61 64 64 | 72 65 73 73 20 74 68 72 | the add|ress thr|
|00004270| 6f 75 67 68 20 61 20 70 | 73 65 75 64 6f 72 65 67 |ough a p|seudoreg|
|00004280| 2c 20 69 66 20 64 65 73 | 69 72 65 64 2c 0d 09 20 |, if des|ired,.. |
|00004290| 62 65 66 6f 72 65 20 74 | 68 65 20 22 62 65 67 69 |before t|he "begi|
|000042a0| 6e 6e 69 6e 67 22 20 6f | 66 20 74 68 65 20 6c 69 |nning" o|f the li|
|000042b0| 62 72 61 72 79 20 63 61 | 6c 6c 20 28 66 6f 72 20 |brary ca|ll (for |
|000042c0| 64 65 6c 65 74 69 6f 6e | 29 2e 20 20 2a 2f 0d 23 |deletion|). */.#|
|000042d0| 69 66 6e 64 65 66 20 4e | 4f 5f 46 55 4e 43 54 49 |ifndef N|O_FUNCTI|
|000042e0| 4f 4e 5f 43 53 45 0d 20 | 20 20 20 20 20 69 66 20 |ON_CSE. | if |
|000042f0| 28 21 20 66 6c 61 67 5f | 6e 6f 5f 66 75 6e 63 74 |(! flag_|no_funct|
|00004300| 69 6f 6e 5f 63 73 65 29 | 0d 09 66 75 6e 65 78 70 |ion_cse)|..funexp|
|00004310| 20 3d 20 63 6f 70 79 5f | 74 6f 5f 6d 6f 64 65 5f | = copy_|to_mode_|
|00004320| 72 65 67 20 28 50 6d 6f | 64 65 2c 20 66 75 6e 65 |reg (Pmo|de, fune|
|00004330| 78 70 29 3b 0d 23 65 6e | 64 69 66 0d 0d 20 20 20 |xp);.#en|dif.. |
|00004340| 20 20 20 69 6e 73 6e 5f | 62 65 66 6f 72 65 20 3d | insn_|before =|
|00004350| 20 67 65 74 5f 6c 61 73 | 74 5f 69 6e 73 6e 20 28 | get_las|t_insn (|
|00004360| 29 3b 0d 0d 20 20 20 20 | 20 20 2f 2a 20 43 61 6e |);.. | /* Can|
|00004370| 6e 6f 74 20 70 61 73 73 | 20 46 55 4e 45 58 50 20 |not pass| FUNEXP |
|00004380| 73 69 6e 63 65 20 20 65 | 6d 69 74 5f 6c 69 62 72 |since e|mit_libr|
|00004390| 61 72 79 5f 63 61 6c 6c | 20 69 6e 73 69 73 74 73 |ary_call| insists|
|000043a0| 0d 09 20 6f 6e 20 67 65 | 74 74 69 6e 67 20 61 20 |.. on ge|tting a |
|000043b0| 53 59 4d 42 4f 4c 5f 52 | 45 46 2e 20 20 42 75 74 |SYMBOL_R|EF. But|
|000043c0| 20 63 73 65 20 77 69 6c | 6c 20 6d 61 6b 65 20 74 | cse wil|l make t|
|000043d0| 68 69 73 20 53 59 4d 42 | 4f 4c 5f 52 45 46 0d 09 |his SYMB|OL_REF..|
|000043e0| 20 62 65 20 72 65 70 6c | 61 63 65 64 20 77 69 74 | be repl|aced wit|
|000043f0| 68 20 74 68 65 20 63 6f | 70 79 20 77 65 20 6d 61 |h the co|py we ma|
|00004400| 64 65 20 6a 75 73 74 20 | 61 62 6f 76 65 2e 20 20 |de just |above. |
|00004410| 2a 2f 0d 20 20 20 20 20 | 20 2f 2a 20 50 61 73 73 |*/. | /* Pass|
|00004420| 20 31 20 66 6f 72 20 4e | 4f 5f 51 55 45 55 45 20 | 1 for N|O_QUEUE |
|00004430| 73 6f 20 77 65 20 64 6f | 6e 27 74 20 6c 6f 73 65 |so we do|n't lose|
|00004440| 20 61 6e 79 20 69 6e 63 | 72 65 6d 65 6e 74 73 0d | any inc|rements.|
|00004450| 09 20 69 66 20 74 68 65 | 20 6c 69 62 63 61 6c 6c |. if the| libcall|
|00004460| 20 69 73 20 63 73 65 27 | 64 20 6f 72 20 6d 6f 76 | is cse'|d or mov|
|00004470| 65 64 2e 20 20 2a 2f 0d | 20 20 20 20 20 20 65 6d |ed. */.| em|
|00004480| 69 74 5f 6c 69 62 72 61 | 72 79 5f 63 61 6c 6c 20 |it_libra|ry_call |
|00004490| 28 67 65 6e 5f 72 74 78 | 20 28 53 59 4d 42 4f 4c |(gen_rtx| (SYMBOL|
|000044a0| 5f 52 45 46 2c 20 50 6d | 6f 64 65 2c 0d 09 09 09 |_REF, Pm|ode,....|
|000044b0| 09 20 20 75 6e 6f 70 74 | 61 62 2d 3e 68 61 6e 64 |. unopt|ab->hand|
|000044c0| 6c 65 72 73 5b 28 69 6e | 74 29 20 6d 6f 64 65 5d |lers[(in|t) mode]|
|000044d0| 2e 6c 69 62 5f 63 61 6c | 6c 29 2c 0d 09 09 09 20 |.lib_cal|l),.... |
|000044e0| 31 2c 20 6d 6f 64 65 2c | 20 31 2c 20 6f 70 30 2c |1, mode,| 1, op0,|
|000044f0| 20 6d 6f 64 65 29 3b 0d | 20 20 20 20 20 20 74 61 | mode);.| ta|
|00004500| 72 67 65 74 20 3d 20 68 | 61 72 64 5f 6c 69 62 63 |rget = h|ard_libc|
|00004510| 61 6c 6c 5f 76 61 6c 75 | 65 20 28 6d 6f 64 65 29 |all_valu|e (mode)|
|00004520| 3b 0d 20 20 20 20 20 20 | 74 65 6d 70 20 3d 20 63 |;. |temp = c|
|00004530| 6f 70 79 5f 74 6f 5f 72 | 65 67 20 28 74 61 72 67 |opy_to_r|eg (targ|
|00004540| 65 74 29 3b 0d 20 20 20 | 20 20 20 69 6e 73 6e 5f |et);. | insn_|
|00004550| 6c 61 73 74 20 3d 20 67 | 65 74 5f 6c 61 73 74 5f |last = g|et_last_|
|00004560| 69 6e 73 6e 20 28 29 3b | 0d 20 20 20 20 20 20 52 |insn ();|. R|
|00004570| 45 47 5f 4e 4f 54 45 53 | 20 28 69 6e 73 6e 5f 6c |EG_NOTES| (insn_l|
|00004580| 61 73 74 29 0d 09 3d 20 | 67 65 6e 5f 72 74 78 20 |ast)..= |gen_rtx |
|00004590| 28 45 58 50 52 5f 4c 49 | 53 54 2c 20 52 45 47 5f |(EXPR_LI|ST, REG_|
|000045a0| 45 51 55 41 4c 2c 0d 09 | 09 20 20 20 67 65 6e 5f |EQUAL,..|. gen_|
|000045b0| 72 74 78 20 28 75 6e 6f | 70 74 61 62 2d 3e 63 6f |rtx (uno|ptab->co|
|000045c0| 64 65 2c 20 6d 6f 64 65 | 2c 20 6f 70 30 29 2c 0d |de, mode|, op0),.|
|000045d0| 09 09 20 20 20 67 65 6e | 5f 72 74 78 20 28 49 4e |.. gen|_rtx (IN|
|000045e0| 53 4e 5f 4c 49 53 54 2c | 20 52 45 47 5f 52 45 54 |SN_LIST,| REG_RET|
|000045f0| 56 41 4c 2c 0d 09 09 09 | 20 20 20 20 4e 45 58 54 |VAL,....| NEXT|
|00004600| 5f 49 4e 53 4e 20 28 69 | 6e 73 6e 5f 62 65 66 6f |_INSN (i|nsn_befo|
|00004610| 72 65 29 2c 0d 09 09 09 | 20 20 20 20 52 45 47 5f |re),....| REG_|
|00004620| 4e 4f 54 45 53 20 28 69 | 6e 73 6e 5f 6c 61 73 74 |NOTES (i|nsn_last|
|00004630| 29 29 29 3b 0d 20 20 20 | 20 20 20 52 45 47 5f 4e |)));. | REG_N|
|00004640| 4f 54 45 53 20 28 4e 45 | 58 54 5f 49 4e 53 4e 20 |OTES (NE|XT_INSN |
|00004650| 28 69 6e 73 6e 5f 62 65 | 66 6f 72 65 29 29 0d 09 |(insn_be|fore))..|
|00004660| 3d 20 67 65 6e 5f 72 74 | 78 20 28 49 4e 53 4e 5f |= gen_rt|x (INSN_|
|00004670| 4c 49 53 54 2c 20 52 45 | 47 5f 4c 49 42 43 41 4c |LIST, RE|G_LIBCAL|
|00004680| 4c 2c 20 69 6e 73 6e 5f | 6c 61 73 74 2c 0d 09 09 |L, insn_|last,...|
|00004690| 20 20 20 52 45 47 5f 4e | 4f 54 45 53 20 28 4e 45 | REG_N|OTES (NE|
|000046a0| 58 54 5f 49 4e 53 4e 20 | 28 69 6e 73 6e 5f 62 65 |XT_INSN |(insn_be|
|000046b0| 66 6f 72 65 29 29 29 3b | 0d 20 20 20 20 20 20 72 |fore)));|. r|
|000046c0| 65 74 75 72 6e 20 74 65 | 6d 70 3b 0d 20 20 20 20 |eturn te|mp;. |
|000046d0| 7d 0d 0d 20 20 2f 2a 20 | 49 74 20 63 61 6e 27 74 |}.. /* |It can't|
|000046e0| 20 62 65 20 64 6f 6e 65 | 20 69 6e 20 74 68 69 73 | be done| in this|
|000046f0| 20 6d 6f 64 65 2e 20 20 | 43 61 6e 20 77 65 20 64 | mode. |Can we d|
|00004700| 6f 20 69 74 20 69 6e 20 | 61 20 77 69 64 65 72 20 |o it in |a wider |
|00004710| 6d 6f 64 65 3f 20 20 2a | 2f 0d 0d 20 20 69 66 20 |mode? *|/.. if |
|00004720| 28 63 6c 61 73 73 20 3d | 3d 20 4d 4f 44 45 5f 49 |(class =|= MODE_I|
|00004730| 4e 54 20 7c 7c 20 63 6c | 61 73 73 20 3d 3d 20 4d |NT || cl|ass == M|
|00004740| 4f 44 45 5f 46 4c 4f 41 | 54 29 0d 20 20 20 20 7b |ODE_FLOA|T). {|
|00004750| 0d 20 20 20 20 20 20 66 | 6f 72 20 28 77 69 64 65 |. f|or (wide|
|00004760| 72 5f 6d 6f 64 65 20 3d | 20 49 4e 43 5f 4d 4f 44 |r_mode =| INC_MOD|
|00004770| 45 20 28 6d 6f 64 65 29 | 3b 0d 09 20 20 20 28 28 |E (mode)|;.. ((|
|00004780| 69 6e 74 29 20 77 69 64 | 65 72 5f 6d 6f 64 65 20 |int) wid|er_mode |
|00004790| 3c 20 28 69 6e 74 29 20 | 4d 41 58 5f 4d 41 43 48 |< (int) |MAX_MACH|
|000047a0| 49 4e 45 5f 4d 4f 44 45 | 0d 09 20 20 20 20 26 26 |INE_MODE|.. &&|
|000047b0| 20 47 45 54 5f 4d 4f 44 | 45 5f 43 4c 41 53 53 20 | GET_MOD|E_CLASS |
|000047c0| 28 77 69 64 65 72 5f 6d | 6f 64 65 29 20 3d 3d 20 |(wider_m|ode) == |
|000047d0| 63 6c 61 73 73 29 3b 0d | 09 20 20 20 77 69 64 65 |class);.|. wide|
|000047e0| 72 5f 6d 6f 64 65 20 3d | 20 49 4e 43 5f 4d 4f 44 |r_mode =| INC_MOD|
|000047f0| 45 20 28 77 69 64 65 72 | 5f 6d 6f 64 65 29 29 0d |E (wider|_mode)).|
|00004800| 09 7b 0d 09 20 20 69 66 | 20 28 28 75 6e 6f 70 74 |.{.. if| ((unopt|
|00004810| 61 62 2d 3e 68 61 6e 64 | 6c 65 72 73 5b 28 69 6e |ab->hand|lers[(in|
|00004820| 74 29 20 77 69 64 65 72 | 5f 6d 6f 64 65 5d 2e 69 |t) wider|_mode].i|
|00004830| 6e 73 6e 5f 63 6f 64 65 | 0d 09 20 20 20 20 20 20 |nsn_code|.. |
|00004840| 20 21 3d 20 43 4f 44 45 | 5f 46 4f 52 5f 6e 6f 74 | != CODE|_FOR_not|
|00004850| 68 69 6e 67 29 0d 09 20 | 20 20 20 20 20 7c 7c 20 |hing).. | || |
|00004860| 75 6e 6f 70 74 61 62 2d | 3e 68 61 6e 64 6c 65 72 |unoptab-|>handler|
|00004870| 73 5b 28 69 6e 74 29 20 | 77 69 64 65 72 5f 6d 6f |s[(int) |wider_mo|
|00004880| 64 65 5d 2e 6c 69 62 5f | 63 61 6c 6c 29 0d 09 20 |de].lib_|call).. |
|00004890| 20 20 20 7b 0d 09 20 20 | 20 20 20 20 69 66 20 28 | {.. | if (|
|000048a0| 47 45 54 5f 4d 4f 44 45 | 20 28 6f 70 30 29 20 21 |GET_MODE| (op0) !|
|000048b0| 3d 20 56 4f 49 44 6d 6f | 64 65 29 0d 09 09 7b 0d |= VOIDmo|de)...{.|
|000048c0| 09 09 20 20 74 65 6d 70 | 20 3d 20 67 65 6e 5f 72 |.. temp| = gen_r|
|000048d0| 65 67 5f 72 74 78 20 28 | 77 69 64 65 72 5f 6d 6f |eg_rtx (|wider_mo|
|000048e0| 64 65 29 3b 0d 09 09 20 | 20 63 6f 6e 76 65 72 74 |de);... | convert|
|000048f0| 5f 6d 6f 76 65 20 28 74 | 65 6d 70 2c 20 6f 70 30 |_move (t|emp, op0|
|00004900| 2c 20 75 6e 73 69 67 6e | 65 64 70 29 3b 0d 23 69 |, unsign|edp);.#i|
|00004910| 66 6e 64 65 66 20 41 50 | 50 4c 45 5f 48 41 58 0d |fndef AP|PLE_HAX.|
|00004920| 09 09 20 20 2f 2a 20 53 | 74 75 70 69 64 20 6d 69 |.. /* S|tupid mi|
|00004930| 73 74 61 6b 65 20 69 6e | 20 6f 72 69 67 69 6e 61 |stake in| origina|
|00004940| 6c 20 31 2e 33 37 20 63 | 6f 64 65 2e 20 2a 2f 0d |l 1.37 c|ode. */.|
|00004950| 09 09 20 20 6f 70 30 20 | 3d 20 74 65 6d 70 3b 0d |.. op0 |= temp;.|
|00004960| 23 65 6e 64 69 66 20 2f | 2a 20 41 50 50 4c 45 5f |#endif /|* APPLE_|
|00004970| 48 41 58 20 2a 2f 0d 09 | 09 7d 0d 09 20 20 20 20 |HAX */..|.}.. |
|00004980| 20 20 0d 23 69 66 64 65 | 66 20 41 50 50 4c 45 5f | .#ifde|f APPLE_|
|00004990| 48 41 58 0d 09 20 20 20 | 20 20 20 2f 2a 20 4f 75 |HAX.. | /* Ou|
|000049a0| 72 20 66 69 78 20 66 6f | 72 20 74 68 65 20 73 74 |r fix fo|r the st|
|000049b0| 75 70 69 64 20 6d 69 73 | 74 61 6b 65 2e 20 2a 2f |upid mis|take. */|
|000049c0| 0d 09 20 20 20 20 20 20 | 74 61 72 67 65 74 20 3d |.. |target =|
|000049d0| 20 65 78 70 61 6e 64 5f | 75 6e 6f 70 20 28 77 69 | expand_|unop (wi|
|000049e0| 64 65 72 5f 6d 6f 64 65 | 2c 20 75 6e 6f 70 74 61 |der_mode|, unopta|
|000049f0| 62 2c 20 74 65 6d 70 2c | 20 30 2c 20 75 6e 73 69 |b, temp,| 0, unsi|
|00004a00| 67 6e 65 64 70 29 3b 0d | 23 65 6c 73 65 0d 09 20 |gnedp);.|#else.. |
|00004a10| 20 20 20 20 20 74 61 72 | 67 65 74 20 3d 20 65 78 | tar|get = ex|
|00004a20| 70 61 6e 64 5f 75 6e 6f | 70 20 28 77 69 64 65 72 |pand_uno|p (wider|
|00004a30| 5f 6d 6f 64 65 2c 20 75 | 6e 6f 70 74 61 62 2c 20 |_mode, u|noptab, |
|00004a40| 6f 70 30 2c 20 30 2c 20 | 75 6e 73 69 67 6e 65 64 |op0, 0, |unsigned|
|00004a50| 70 29 3b 0d 23 65 6e 64 | 69 66 20 2f 2a 20 41 50 |p);.#end|if /* AP|
|00004a60| 50 4c 45 5f 48 41 58 20 | 2a 2f 0d 09 20 20 20 20 |PLE_HAX |*/.. |
|00004a70| 20 20 69 66 20 28 63 6c | 61 73 73 20 3d 3d 20 4d | if (cl|ass == M|
|00004a80| 4f 44 45 5f 46 4c 4f 41 | 54 29 0d 09 09 7b 0d 23 |ODE_FLOA|T)...{.#|
|00004a90| 69 66 64 65 66 20 41 50 | 50 4c 45 5f 48 41 58 0d |ifdef AP|PLE_HAX.|
|00004aa0| 09 09 20 20 2f 2a 20 43 | 6f 6e 74 69 6e 75 69 6e |.. /* C|ontinuin|
|00004ab0| 67 20 74 68 65 20 66 69 | 78 2c 20 77 65 20 6e 65 |g the fi|x, we ne|
|00004ac0| 65 64 20 61 6e 6f 74 68 | 65 72 20 74 65 6d 70 20 |ed anoth|er temp |
|00004ad0| 72 74 78 2e 20 2a 2f 0d | 09 09 20 20 72 74 78 20 |rtx. */.|.. rtx |
|00004ae0| 74 65 6d 70 32 3b 0d 0d | 09 09 20 20 74 65 6d 70 |temp2;..|.. temp|
|00004af0| 32 20 3d 20 67 65 6e 5f | 72 65 67 5f 72 74 78 20 |2 = gen_|reg_rtx |
|00004b00| 28 6d 6f 64 65 29 3b 0d | 09 09 20 20 63 6f 6e 76 |(mode);.|.. conv|
|00004b10| 65 72 74 5f 6d 6f 76 65 | 20 28 74 65 6d 70 32 2c |ert_move| (temp2,|
|00004b20| 20 74 61 72 67 65 74 2c | 20 30 29 3b 0d 09 09 20 | target,| 0);... |
|00004b30| 20 72 65 74 75 72 6e 20 | 74 65 6d 70 32 3b 0d 23 | return |temp2;.#|
|00004b40| 65 6c 73 65 0d 09 09 20 | 20 69 66 20 28 74 61 72 |else... | if (tar|
|00004b50| 67 65 74 20 3d 3d 20 30 | 29 0d 09 09 20 20 20 20 |get == 0|)... |
|00004b60| 74 61 72 67 65 74 20 3d | 20 67 65 6e 5f 72 65 67 |target =| gen_reg|
|00004b70| 5f 72 74 78 20 28 6d 6f | 64 65 29 3b 0d 09 09 20 |_rtx (mo|de);... |
|00004b80| 20 63 6f 6e 76 65 72 74 | 5f 6d 6f 76 65 20 28 74 | convert|_move (t|
|00004b90| 61 72 67 65 74 2c 20 74 | 65 6d 70 2c 20 30 29 3b |arget, t|emp, 0);|
|00004ba0| 0d 09 09 20 20 72 65 74 | 75 72 6e 20 74 61 72 67 |... ret|urn targ|
|00004bb0| 65 74 3b 0d 23 65 6e 64 | 69 66 20 2f 2a 20 41 50 |et;.#end|if /* AP|
|00004bc0| 50 4c 45 5f 48 41 58 20 | 2a 2f 0d 09 09 7d 0d 09 |PLE_HAX |*/...}..|
|00004bd0| 20 20 20 20 20 20 65 6c | 73 65 0d 09 09 72 65 74 | el|se...ret|
|00004be0| 75 72 6e 20 67 65 6e 5f | 6c 6f 77 70 61 72 74 20 |urn gen_|lowpart |
|00004bf0| 28 6d 6f 64 65 2c 20 74 | 61 72 67 65 74 29 3b 0d |(mode, t|arget);.|
|00004c00| 09 20 20 20 20 7d 0d 09 | 7d 0d 20 20 20 20 7d 0d |. }..|}. }.|
|00004c10| 0d 20 20 72 65 74 75 72 | 6e 20 30 3b 0d 7d 0d 0c |. retur|n 0;.}..|
|00004c20| 0d 2f 2a 20 47 65 6e 65 | 72 61 74 65 20 61 6e 20 |./* Gene|rate an |
|00004c30| 69 6e 73 74 72 75 63 74 | 69 6f 6e 20 77 68 6f 73 |instruct|ion whos|
|00004c40| 65 20 69 6e 73 6e 2d 63 | 6f 64 65 20 69 73 20 49 |e insn-c|ode is I|
|00004c50| 4e 53 4e 5f 43 4f 44 45 | 2c 0d 20 20 20 77 69 74 |NSN_CODE|,. wit|
|00004c60| 68 20 74 77 6f 20 6f 70 | 65 72 61 6e 64 73 3a 20 |h two op|erands: |
|00004c70| 61 6e 20 6f 75 74 70 75 | 74 20 54 41 52 47 45 54 |an outpu|t TARGET|
|00004c80| 20 61 6e 64 20 61 6e 20 | 69 6e 70 75 74 20 4f 50 | and an |input OP|
|00004c90| 30 2e 0d 20 20 20 54 41 | 52 47 45 54 20 2a 6d 75 |0.. TA|RGET *mu|
|00004ca0| 73 74 2a 20 62 65 20 6e | 6f 6e 7a 65 72 6f 2c 20 |st* be n|onzero, |
|00004cb0| 61 6e 64 20 74 68 65 20 | 6f 75 74 70 75 74 20 69 |and the |output i|
|00004cc0| 73 20 61 6c 77 61 79 73 | 20 73 74 6f 72 65 64 20 |s always| stored |
|00004cd0| 74 68 65 72 65 2e 0d 20 | 20 20 43 4f 44 45 20 69 |there.. | CODE i|
|00004ce0| 73 20 61 6e 20 72 74 78 | 20 63 6f 64 65 20 73 75 |s an rtx| code su|
|00004cf0| 63 68 20 74 68 61 74 20 | 28 43 4f 44 45 20 4f 50 |ch that |(CODE OP|
|00004d00| 30 29 20 69 73 20 61 6e | 20 72 74 78 20 74 68 61 |0) is an| rtx tha|
|00004d10| 74 20 64 65 73 63 72 69 | 62 65 73 0d 20 20 20 74 |t descri|bes. t|
|00004d20| 68 65 20 76 61 6c 75 65 | 20 74 68 61 74 20 69 73 |he value| that is|
|00004d30| 20 73 74 6f 72 65 64 20 | 69 6e 74 6f 20 54 41 52 | stored |into TAR|
|00004d40| 47 45 54 2e 20 20 2a 2f | 0d 0d 76 6f 69 64 0d 65 |GET. */|..void.e|
|00004d50| 6d 69 74 5f 75 6e 6f 70 | 5f 69 6e 73 6e 20 28 69 |mit_unop|_insn (i|
|00004d60| 63 6f 64 65 2c 20 74 61 | 72 67 65 74 2c 20 6f 70 |code, ta|rget, op|
|00004d70| 30 2c 20 63 6f 64 65 29 | 0d 20 20 20 20 20 69 6e |0, code)|. in|
|00004d80| 74 20 69 63 6f 64 65 3b | 0d 20 20 20 20 20 72 74 |t icode;|. rt|
|00004d90| 78 20 74 61 72 67 65 74 | 3b 0d 20 20 20 20 20 72 |x target|;. r|
|00004da0| 74 78 20 6f 70 30 3b 0d | 20 20 20 20 20 65 6e 75 |tx op0;.| enu|
|00004db0| 6d 20 72 74 78 5f 63 6f | 64 65 20 63 6f 64 65 3b |m rtx_co|de code;|
|00004dc0| 0d 7b 0d 20 20 72 65 67 | 69 73 74 65 72 20 72 74 |.{. reg|ister rt|
|00004dd0| 78 20 74 65 6d 70 3b 0d | 20 20 65 6e 75 6d 20 6d |x temp;.| enum m|
|00004de0| 61 63 68 69 6e 65 5f 6d | 6f 64 65 20 6d 6f 64 65 |achine_m|ode mode|
|00004df0| 30 20 3d 20 69 6e 73 6e | 5f 6f 70 65 72 61 6e 64 |0 = insn|_operand|
|00004e00| 5f 6d 6f 64 65 5b 69 63 | 6f 64 65 5d 5b 31 5d 3b |_mode[ic|ode][1];|
|00004e10| 0d 20 20 72 74 78 20 69 | 6e 73 6e 3b 0d 20 20 72 |. rtx i|nsn;. r|
|00004e20| 74 78 20 70 72 65 76 5f | 69 6e 73 6e 3b 0d 0d 20 |tx prev_|insn;.. |
|00004e30| 20 74 65 6d 70 20 3d 20 | 74 61 72 67 65 74 20 3d | temp = |target =|
|00004e40| 20 70 72 6f 74 65 63 74 | 5f 66 72 6f 6d 5f 71 75 | protect|_from_qu|
|00004e50| 65 75 65 20 28 74 61 72 | 67 65 74 2c 20 31 29 3b |eue (tar|get, 1);|
|00004e60| 0d 0d 20 20 6f 70 30 20 | 3d 20 70 72 6f 74 65 63 |.. op0 |= protec|
|00004e70| 74 5f 66 72 6f 6d 5f 71 | 75 65 75 65 20 28 6f 70 |t_from_q|ueue (op|
|00004e80| 30 2c 20 30 29 3b 0d 0d | 20 20 69 66 20 28 66 6c |0, 0);..| if (fl|
|00004e90| 61 67 5f 66 6f 72 63 65 | 5f 6d 65 6d 29 0d 20 20 |ag_force|_mem). |
|00004ea0| 20 20 6f 70 30 20 3d 20 | 66 6f 72 63 65 5f 6e 6f | op0 = |force_no|
|00004eb0| 74 5f 6d 65 6d 20 28 6f | 70 30 29 3b 0d 0d 20 20 |t_mem (o|p0);.. |
|00004ec0| 2f 2a 20 4e 6f 77 2c 20 | 69 66 20 69 6e 73 6e 20 |/* Now, |if insn |
|00004ed0| 72 65 71 75 69 72 65 73 | 20 72 65 67 69 73 74 65 |requires| registe|
|00004ee0| 72 20 6f 70 65 72 61 6e | 64 73 2c 20 70 75 74 20 |r operan|ds, put |
|00004ef0| 6f 70 65 72 61 6e 64 73 | 20 69 6e 74 6f 20 72 65 |operands| into re|
|00004f00| 67 73 2e 20 20 2a 2f 0d | 0d 20 20 69 66 20 28 21 |gs. */.|. if (!|
|00004f10| 20 28 2a 69 6e 73 6e 5f | 6f 70 65 72 61 6e 64 5f | (*insn_|operand_|
|00004f20| 70 72 65 64 69 63 61 74 | 65 5b 69 63 6f 64 65 5d |predicat|e[icode]|
|00004f30| 5b 31 5d 29 20 28 6f 70 | 30 2c 20 6d 6f 64 65 30 |[1]) (op|0, mode0|
|00004f40| 29 29 0d 20 20 20 20 6f | 70 30 20 3d 20 66 6f 72 |)). o|p0 = for|
|00004f50| 63 65 5f 72 65 67 20 28 | 6d 6f 64 65 30 2c 20 6f |ce_reg (|mode0, o|
|00004f60| 70 30 29 3b 0d 0d 20 20 | 69 66 20 28 21 20 28 2a |p0);.. |if (! (*|
|00004f70| 69 6e 73 6e 5f 6f 70 65 | 72 61 6e 64 5f 70 72 65 |insn_ope|rand_pre|
|00004f80| 64 69 63 61 74 65 5b 69 | 63 6f 64 65 5d 5b 30 5d |dicate[i|code][0]|
|00004f90| 29 20 28 74 65 6d 70 2c | 20 47 45 54 5f 4d 4f 44 |) (temp,| GET_MOD|
|00004fa0| 45 20 28 74 65 6d 70 29 | 29 0d 20 20 20 20 20 20 |E (temp)|). |
|00004fb0| 7c 7c 20 28 66 6c 61 67 | 5f 66 6f 72 63 65 5f 6d ||| (flag|_force_m|
|00004fc0| 65 6d 20 26 26 20 47 45 | 54 5f 43 4f 44 45 20 28 |em && GE|T_CODE (|
|00004fd0| 74 65 6d 70 29 20 3d 3d | 20 4d 45 4d 29 29 0d 20 |temp) ==| MEM)). |
|00004fe0| 20 20 20 74 65 6d 70 20 | 3d 20 67 65 6e 5f 72 65 | temp |= gen_re|
|00004ff0| 67 5f 72 74 78 20 28 47 | 45 54 5f 4d 4f 44 45 20 |g_rtx (G|ET_MODE |
|00005000| 28 74 65 6d 70 29 29 3b | 0d 0d 20 20 70 72 65 76 |(temp));|.. prev|
|00005010| 5f 69 6e 73 6e 20 3d 20 | 67 65 74 5f 6c 61 73 74 |_insn = |get_last|
|00005020| 5f 69 6e 73 6e 20 28 29 | 3b 0d 20 20 69 6e 73 6e |_insn ()|;. insn|
|00005030| 20 3d 20 65 6d 69 74 5f | 69 6e 73 6e 20 28 47 45 | = emit_|insn (GE|
|00005040| 4e 5f 46 43 4e 20 28 69 | 63 6f 64 65 29 20 28 74 |N_FCN (i|code) (t|
|00005050| 65 6d 70 2c 20 6f 70 30 | 29 29 3b 0d 0d 20 20 2f |emp, op0|));.. /|
|00005060| 2a 20 49 66 20 77 65 20 | 6a 75 73 74 20 6d 61 64 |* If we |just mad|
|00005070| 65 20 61 20 6d 75 6c 74 | 69 2d 69 6e 73 6e 20 73 |e a mult|i-insn s|
|00005080| 65 71 75 65 6e 63 65 2c | 0d 20 20 20 20 20 72 65 |equence,|. re|
|00005090| 63 6f 72 64 20 69 6e 20 | 74 68 65 20 6c 61 73 74 |cord in |the last|
|000050a0| 20 69 6e 73 6e 20 61 6e | 20 65 71 75 69 76 61 6c | insn an| equival|
|000050b0| 65 6e 74 20 65 78 70 72 | 65 73 73 69 6f 6e 20 66 |ent expr|ession f|
|000050c0| 6f 72 20 69 74 73 20 76 | 61 6c 75 65 0d 20 20 20 |or its v|alue. |
|000050d0| 20 20 61 6e 64 20 61 20 | 70 6f 69 6e 74 65 72 20 | and a |pointer |
|000050e0| 74 6f 20 74 68 65 20 66 | 69 72 73 74 20 69 6e 73 |to the f|irst ins|
|000050f0| 6e 2e 20 20 54 68 69 73 | 20 6d 61 6b 65 73 20 63 |n. This| makes c|
|00005100| 73 65 20 70 6f 73 73 69 | 62 6c 65 2e 20 20 2a 2f |se possi|ble. */|
|00005110| 0d 20 20 69 66 20 28 63 | 6f 64 65 20 21 3d 20 55 |. if (c|ode != U|
|00005120| 4e 4b 4e 4f 57 4e 20 26 | 26 20 50 52 45 56 5f 49 |NKNOWN &|& PREV_I|
|00005130| 4e 53 4e 20 28 69 6e 73 | 6e 29 20 21 3d 20 70 72 |NSN (ins|n) != pr|
|00005140| 65 76 5f 69 6e 73 6e 29 | 0d 20 20 20 20 52 45 47 |ev_insn)|. REG|
|00005150| 5f 4e 4f 54 45 53 20 28 | 69 6e 73 6e 29 0d 20 20 |_NOTES (|insn). |
|00005160| 20 20 20 20 3d 20 67 65 | 6e 5f 72 74 78 20 28 45 | = ge|n_rtx (E|
|00005170| 58 50 52 5f 4c 49 53 54 | 2c 20 52 45 47 5f 45 51 |XPR_LIST|, REG_EQ|
|00005180| 55 41 4c 2c 0d 09 09 20 | 67 65 6e 5f 72 74 78 20 |UAL,... |gen_rtx |
|00005190| 28 63 6f 64 65 2c 20 47 | 45 54 5f 4d 4f 44 45 20 |(code, G|ET_MODE |
|000051a0| 28 74 65 6d 70 29 2c 20 | 6f 70 30 29 2c 0d 09 09 |(temp), |op0),...|
|000051b0| 20 52 45 47 5f 4e 4f 54 | 45 53 20 28 69 6e 73 6e | REG_NOT|ES (insn|
|000051c0| 29 29 3b 0d 20 20 0d 20 | 20 69 66 20 28 74 65 6d |));. . | if (tem|
|000051d0| 70 20 21 3d 20 74 61 72 | 67 65 74 29 0d 20 20 20 |p != tar|get). |
|000051e0| 20 65 6d 69 74 5f 6d 6f | 76 65 5f 69 6e 73 6e 20 | emit_mo|ve_insn |
|000051f0| 28 74 61 72 67 65 74 2c | 20 74 65 6d 70 29 3b 0d |(target,| temp);.|
|00005200| 7d 0d 0c 0d 2f 2a 20 47 | 65 6e 65 72 61 74 65 20 |}.../* G|enerate |
|00005210| 63 6f 64 65 20 74 6f 20 | 73 74 6f 72 65 20 7a 65 |code to |store ze|
|00005220| 72 6f 20 69 6e 20 58 2e | 20 20 2a 2f 0d 0d 76 6f |ro in X.| */..vo|
|00005230| 69 64 0d 65 6d 69 74 5f | 63 6c 72 5f 69 6e 73 6e |id.emit_|clr_insn|
|00005240| 20 28 78 29 0d 20 20 20 | 20 20 72 74 78 20 78 3b | (x). | rtx x;|
|00005250| 0d 7b 0d 20 20 65 6d 69 | 74 5f 6d 6f 76 65 5f 69 |.{. emi|t_move_i|
|00005260| 6e 73 6e 20 28 78 2c 20 | 63 6f 6e 73 74 30 5f 72 |nsn (x, |const0_r|
|00005270| 74 78 29 3b 0d 7d 0d 0d | 2f 2a 20 47 65 6e 65 72 |tx);.}..|/* Gener|
|00005280| 61 74 65 20 63 6f 64 65 | 20 74 6f 20 73 74 6f 72 |ate code| to stor|
|00005290| 65 20 31 20 69 6e 20 58 | 0d 20 20 20 61 73 73 75 |e 1 in X|. assu|
|000052a0| 6d 69 6e 67 20 69 74 20 | 63 6f 6e 74 61 69 6e 73 |ming it |contains|
|000052b0| 20 7a 65 72 6f 20 62 65 | 66 6f 72 65 68 61 6e 64 | zero be|forehand|
|000052c0| 2e 20 20 2a 2f 0d 0d 76 | 6f 69 64 0d 65 6d 69 74 |. */..v|oid.emit|
|000052d0| 5f 30 5f 74 6f 5f 31 5f | 69 6e 73 6e 20 28 78 29 |_0_to_1_|insn (x)|
|000052e0| 0d 20 20 20 20 20 72 74 | 78 20 78 3b 0d 7b 0d 20 |. rt|x x;.{. |
|000052f0| 20 65 6d 69 74 5f 6d 6f | 76 65 5f 69 6e 73 6e 20 | emit_mo|ve_insn |
|00005300| 28 78 2c 20 63 6f 6e 73 | 74 31 5f 72 74 78 29 3b |(x, cons|t1_rtx);|
|00005310| 0d 7d 0d 0d 2f 2a 20 47 | 65 6e 65 72 61 74 65 20 |.}../* G|enerate |
|00005320| 63 6f 64 65 20 74 6f 20 | 63 6f 6d 70 61 72 65 20 |code to |compare |
|00005330| 58 20 77 69 74 68 20 59 | 0d 20 20 20 73 6f 20 74 |X with Y|. so t|
|00005340| 68 61 74 20 74 68 65 20 | 63 6f 6e 64 69 74 69 6f |hat the |conditio|
|00005350| 6e 20 63 6f 64 65 73 20 | 61 72 65 20 73 65 74 2e |n codes |are set.|
|00005360| 0d 0d 20 20 20 55 4e 53 | 49 47 4e 45 44 50 20 6e |.. UNS|IGNEDP n|
|00005370| 6f 6e 7a 65 72 6f 20 73 | 61 79 73 20 74 68 61 74 |onzero s|ays that|
|00005380| 20 58 20 61 6e 64 20 59 | 20 61 72 65 20 75 6e 73 | X and Y| are uns|
|00005390| 69 67 6e 65 64 3b 0d 20 | 20 20 74 68 69 73 20 6d |igned;. | this m|
|000053a0| 61 74 74 65 72 73 20 69 | 66 20 74 68 65 79 20 6e |atters i|f they n|
|000053b0| 65 65 64 20 74 6f 20 62 | 65 20 77 69 64 65 6e 65 |eed to b|e widene|
|000053c0| 64 2e 0d 0d 20 20 20 49 | 66 20 74 68 65 79 20 68 |d... I|f they h|
|000053d0| 61 76 65 20 6d 6f 64 65 | 20 42 4c 4b 6d 6f 64 65 |ave mode| BLKmode|
|000053e0| 2c 20 74 68 65 6e 20 53 | 49 5a 45 20 73 70 65 63 |, then S|IZE spec|
|000053f0| 69 66 69 65 73 20 74 68 | 65 20 73 69 7a 65 20 6f |ifies th|e size o|
|00005400| 66 20 62 6f 74 68 20 58 | 20 61 6e 64 20 59 2c 0d |f both X| and Y,.|
|00005410| 20 20 20 61 6e 64 20 41 | 4c 49 47 4e 20 73 70 65 | and A|LIGN spe|
|00005420| 63 69 66 69 65 73 20 74 | 68 65 20 6b 6e 6f 77 6e |cifies t|he known|
|00005430| 20 73 68 61 72 65 64 20 | 61 6c 69 67 6e 6d 65 6e | shared |alignmen|
|00005440| 74 20 6f 66 20 58 20 61 | 6e 64 20 59 2e 20 20 2a |t of X a|nd Y. *|
|00005450| 2f 0d 0d 76 6f 69 64 0d | 65 6d 69 74 5f 63 6d 70 |/..void.|emit_cmp|
|00005460| 5f 69 6e 73 6e 20 28 78 | 2c 20 79 2c 20 73 69 7a |_insn (x|, y, siz|
|00005470| 65 2c 20 75 6e 73 69 67 | 6e 65 64 70 2c 20 61 6c |e, unsig|nedp, al|
|00005480| 69 67 6e 29 0d 20 20 20 | 20 20 72 74 78 20 78 2c |ign). | rtx x,|
|00005490| 20 79 3b 0d 20 20 20 20 | 20 72 74 78 20 73 69 7a | y;. | rtx siz|
|000054a0| 65 3b 0d 20 20 20 20 20 | 69 6e 74 20 75 6e 73 69 |e;. |int unsi|
|000054b0| 67 6e 65 64 70 3b 0d 20 | 20 20 20 20 69 6e 74 20 |gnedp;. | int |
|000054c0| 61 6c 69 67 6e 3b 0d 7b | 0d 20 20 65 6e 75 6d 20 |align;.{|. enum |
|000054d0| 6d 61 63 68 69 6e 65 5f | 6d 6f 64 65 20 6d 6f 64 |machine_|mode mod|
|000054e0| 65 20 3d 20 47 45 54 5f | 4d 4f 44 45 20 28 78 29 |e = GET_|MODE (x)|
|000054f0| 3b 0d 20 20 65 6e 75 6d | 20 6d 6f 64 65 5f 63 6c |;. enum| mode_cl|
|00005500| 61 73 73 20 63 6c 61 73 | 73 3b 0d 20 20 65 6e 75 |ass clas|s;. enu|
|00005510| 6d 20 6d 61 63 68 69 6e | 65 5f 6d 6f 64 65 20 77 |m machin|e_mode w|
|00005520| 69 64 65 72 5f 6d 6f 64 | 65 3b 0d 0d 20 20 69 66 |ider_mod|e;.. if|
|00005530| 20 28 6d 6f 64 65 20 3d | 3d 20 56 4f 49 44 6d 6f | (mode =|= VOIDmo|
|00005540| 64 65 29 20 6d 6f 64 65 | 20 3d 20 47 45 54 5f 4d |de) mode| = GET_M|
|00005550| 4f 44 45 20 28 79 29 3b | 0d 20 20 2f 2a 20 54 68 |ODE (y);|. /* Th|
|00005560| 65 79 20 63 6f 75 6c 64 | 20 62 6f 74 68 20 62 65 |ey could| both be|
|00005570| 20 56 4f 49 44 6d 6f 64 | 65 20 69 66 20 62 6f 74 | VOIDmod|e if bot|
|00005580| 68 20 61 72 67 73 20 61 | 72 65 20 69 6d 6d 65 64 |h args a|re immed|
|00005590| 69 61 74 65 20 63 6f 6e | 73 74 61 6e 74 73 2c 0d |iate con|stants,.|
|000055a0| 20 20 20 20 20 62 75 74 | 20 77 65 20 73 68 6f 75 | but| we shou|
|000055b0| 6c 64 20 66 6f 6c 64 20 | 74 68 61 74 20 61 74 20 |ld fold |that at |
|000055c0| 61 6e 20 65 61 72 6c 69 | 65 72 20 73 74 61 67 65 |an earli|er stage|
|000055d0| 2e 0d 20 20 20 20 20 57 | 69 74 68 20 6e 6f 20 73 |.. W|ith no s|
|000055e0| 70 65 63 69 61 6c 20 63 | 6f 64 65 20 68 65 72 65 |pecial c|ode here|
|000055f0| 2c 20 74 68 69 73 20 77 | 69 6c 6c 20 63 61 6c 6c |, this w|ill call|
|00005600| 20 61 62 6f 72 74 2c 0d | 20 20 20 20 20 72 65 6d | abort,.| rem|
|00005610| 69 6e 64 69 6e 67 20 74 | 68 65 20 70 72 6f 67 72 |inding t|he progr|
|00005620| 61 6d 6d 65 72 20 74 6f | 20 69 6d 70 6c 65 6d 65 |ammer to| impleme|
|00005630| 6e 74 20 73 75 63 68 20 | 66 6f 6c 64 69 6e 67 2e |nt such |folding.|
|00005640| 20 20 2a 2f 0d 0d 20 20 | 63 6c 61 73 73 20 3d 20 | */.. |class = |
|00005650| 47 45 54 5f 4d 4f 44 45 | 5f 43 4c 41 53 53 20 28 |GET_MODE|_CLASS (|
|00005660| 6d 6f 64 65 29 3b 0d 0d | 20 20 69 66 20 28 6d 6f |mode);..| if (mo|
|00005670| 64 65 20 21 3d 20 42 4c | 4b 6d 6f 64 65 20 26 26 |de != BL|Kmode &&|
|00005680| 20 66 6c 61 67 5f 66 6f | 72 63 65 5f 6d 65 6d 29 | flag_fo|rce_mem)|
|00005690| 0d 20 20 20 20 7b 0d 20 | 20 20 20 20 20 78 20 3d |. {. | x =|
|000056a0| 20 66 6f 72 63 65 5f 6e | 6f 74 5f 6d 65 6d 20 28 | force_n|ot_mem (|
|000056b0| 78 29 3b 0d 20 20 20 20 | 20 20 79 20 3d 20 66 6f |x);. | y = fo|
|000056c0| 72 63 65 5f 6e 6f 74 5f | 6d 65 6d 20 28 79 29 3b |rce_not_|mem (y);|
|000056d0| 0d 20 20 20 20 7d 0d 0d | 20 20 2f 2a 20 48 61 6e |. }..| /* Han|
|000056e0| 64 6c 65 20 61 6c 6c 20 | 42 4c 4b 6d 6f 64 65 20 |dle all |BLKmode |
|000056f0| 63 6f 6d 70 61 72 65 73 | 2e 20 20 2a 2f 0d 0d 20 |compares|. */.. |
|00005700| 20 69 66 20 28 6d 6f 64 | 65 20 3d 3d 20 42 4c 4b | if (mod|e == BLK|
|00005710| 6d 6f 64 65 29 0d 20 20 | 20 20 7b 0d 20 20 20 20 |mode). | {. |
|00005720| 20 20 65 6d 69 74 5f 71 | 75 65 75 65 20 28 29 3b | emit_q|ueue ();|
|00005730| 0d 20 20 20 20 20 20 78 | 20 3d 20 70 72 6f 74 65 |. x| = prote|
|00005740| 63 74 5f 66 72 6f 6d 5f | 71 75 65 75 65 20 28 78 |ct_from_|queue (x|
|00005750| 2c 20 30 29 3b 0d 20 20 | 20 20 20 20 79 20 3d 20 |, 0);. | y = |
|00005760| 70 72 6f 74 65 63 74 5f | 66 72 6f 6d 5f 71 75 65 |protect_|from_que|
|00005770| 75 65 20 28 79 2c 20 30 | 29 3b 0d 0d 20 20 20 20 |ue (y, 0|);.. |
|00005780| 20 20 69 66 20 28 73 69 | 7a 65 20 3d 3d 20 30 29 | if (si|ze == 0)|
|00005790| 0d 09 61 62 6f 72 74 20 | 28 29 3b 0d 23 69 66 64 |..abort |();.#ifd|
|000057a0| 65 66 20 48 41 56 45 5f | 63 6d 70 73 74 72 71 69 |ef HAVE_|cmpstrqi|
|000057b0| 0d 20 20 20 20 20 20 69 | 66 20 28 48 41 56 45 5f |. i|f (HAVE_|
|000057c0| 63 6d 70 73 74 72 71 69 | 0d 09 20 20 26 26 20 47 |cmpstrqi|.. && G|
|000057d0| 45 54 5f 43 4f 44 45 20 | 28 73 69 7a 65 29 20 3d |ET_CODE |(size) =|
|000057e0| 3d 20 43 4f 4e 53 54 5f | 49 4e 54 0d 09 20 20 26 |= CONST_|INT.. &|
|000057f0| 26 20 49 4e 54 56 41 4c | 20 28 73 69 7a 65 29 20 |& INTVAL| (size) |
|00005800| 3c 20 28 31 20 3c 3c 20 | 47 45 54 5f 4d 4f 44 45 |< (1 << |GET_MODE|
|00005810| 5f 42 49 54 53 49 5a 45 | 20 28 51 49 6d 6f 64 65 |_BITSIZE| (QImode|
|00005820| 29 29 29 0d 09 65 6d 69 | 74 5f 69 6e 73 6e 20 28 |)))..emi|t_insn (|
|00005830| 67 65 6e 5f 63 6d 70 73 | 74 72 71 69 20 28 78 2c |gen_cmps|trqi (x,|
|00005840| 20 79 2c 20 73 69 7a 65 | 2c 0d 09 09 09 09 20 67 | y, size|,..... g|
|00005850| 65 6e 5f 72 74 78 20 28 | 43 4f 4e 53 54 5f 49 4e |en_rtx (|CONST_IN|
|00005860| 54 2c 20 56 4f 49 44 6d | 6f 64 65 2c 20 61 6c 69 |T, VOIDm|ode, ali|
|00005870| 67 6e 29 29 29 3b 0d 20 | 20 20 20 20 20 65 6c 73 |gn)));. | els|
|00005880| 65 0d 23 65 6e 64 69 66 | 0d 23 69 66 64 65 66 20 |e.#endif|.#ifdef |
|00005890| 48 41 56 45 5f 63 6d 70 | 73 74 72 68 69 0d 20 20 |HAVE_cmp|strhi. |
|000058a0| 20 20 20 20 69 66 20 28 | 48 41 56 45 5f 63 6d 70 | if (|HAVE_cmp|
|000058b0| 73 74 72 68 69 0d 09 20 | 20 26 26 20 47 45 54 5f |strhi.. | && GET_|
|000058c0| 43 4f 44 45 20 28 73 69 | 7a 65 29 20 3d 3d 20 43 |CODE (si|ze) == C|
|000058d0| 4f 4e 53 54 5f 49 4e 54 | 0d 09 20 20 26 26 20 49 |ONST_INT|.. && I|
|000058e0| 4e 54 56 41 4c 20 28 73 | 69 7a 65 29 20 3c 20 28 |NTVAL (s|ize) < (|
|000058f0| 31 20 3c 3c 20 47 45 54 | 5f 4d 4f 44 45 5f 42 49 |1 << GET|_MODE_BI|
|00005900| 54 53 49 5a 45 20 28 48 | 49 6d 6f 64 65 29 29 29 |TSIZE (H|Imode)))|
|00005910| 0d 09 65 6d 69 74 5f 69 | 6e 73 6e 20 28 67 65 6e |..emit_i|nsn (gen|
|00005920| 5f 63 6d 70 73 74 72 68 | 69 20 28 78 2c 20 79 2c |_cmpstrh|i (x, y,|
|00005930| 20 73 69 7a 65 2c 0d 09 | 09 09 09 20 67 65 6e 5f | size,..|... gen_|
|00005940| 72 74 78 20 28 43 4f 4e | 53 54 5f 49 4e 54 2c 20 |rtx (CON|ST_INT, |
|00005950| 56 4f 49 44 6d 6f 64 65 | 2c 20 61 6c 69 67 6e 29 |VOIDmode|, align)|
|00005960| 29 29 3b 0d 20 20 20 20 | 20 20 65 6c 73 65 0d 23 |));. | else.#|
|00005970| 65 6e 64 69 66 0d 23 69 | 66 64 65 66 20 48 41 56 |endif.#i|fdef HAV|
|00005980| 45 5f 63 6d 70 73 74 72 | 73 69 0d 20 20 20 20 20 |E_cmpstr|si. |
|00005990| 20 69 66 20 28 48 41 56 | 45 5f 63 6d 70 73 74 72 | if (HAV|E_cmpstr|
|000059a0| 73 69 29 0d 09 65 6d 69 | 74 5f 69 6e 73 6e 20 28 |si)..emi|t_insn (|
|000059b0| 67 65 6e 5f 63 6d 70 73 | 74 72 73 69 20 28 78 2c |gen_cmps|trsi (x,|
|000059c0| 20 79 2c 20 63 6f 6e 76 | 65 72 74 5f 74 6f 5f 6d | y, conv|ert_to_m|
|000059d0| 6f 64 65 20 28 53 49 6d | 6f 64 65 2c 20 73 69 7a |ode (SIm|ode, siz|
|000059e0| 65 2c 20 31 29 2c 0d 09 | 09 09 09 20 67 65 6e 5f |e, 1),..|... gen_|
|000059f0| 72 74 78 20 28 43 4f 4e | 53 54 5f 49 4e 54 2c 20 |rtx (CON|ST_INT, |
|00005a00| 56 4f 49 44 6d 6f 64 65 | 2c 20 61 6c 69 67 6e 29 |VOIDmode|, align)|
|00005a10| 29 29 3b 0d 20 20 20 20 | 20 20 65 6c 73 65 0d 23 |));. | else.#|
|00005a20| 65 6e 64 69 66 0d 09 7b | 0d 23 69 66 64 65 66 20 |endif..{|.#ifdef |
|00005a30| 54 41 52 47 45 54 5f 4d | 45 4d 5f 46 55 4e 43 54 |TARGET_M|EM_FUNCT|
|00005a40| 49 4f 4e 53 0d 09 20 20 | 65 6d 69 74 5f 6c 69 62 |IONS.. |emit_lib|
|00005a50| 72 61 72 79 5f 63 61 6c | 6c 20 28 67 65 6e 5f 72 |rary_cal|l (gen_r|
|00005a60| 74 78 20 28 53 59 4d 42 | 4f 4c 5f 52 45 46 2c 20 |tx (SYMB|OL_REF, |
|00005a70| 50 6d 6f 64 65 2c 20 22 | 6d 65 6d 63 6d 70 22 29 |Pmode, "|memcmp")|
|00005a80| 2c 20 30 2c 20 0d 09 09 | 09 20 20 20 20 20 53 49 |, 0, ...|. SI|
|00005a90| 6d 6f 64 65 2c 20 33 2c | 0d 09 09 09 20 20 20 20 |mode, 3,|.... |
|00005aa0| 20 58 45 58 50 20 28 78 | 2c 20 30 29 2c 20 50 6d | XEXP (x|, 0), Pm|
|00005ab0| 6f 64 65 2c 20 58 45 58 | 50 20 28 79 2c 20 30 29 |ode, XEX|P (y, 0)|
|00005ac0| 2c 20 50 6d 6f 64 65 2c | 0d 09 09 09 20 20 20 20 |, Pmode,|.... |
|00005ad0| 20 73 69 7a 65 2c 20 50 | 6d 6f 64 65 29 3b 0d 23 | size, P|mode);.#|
|00005ae0| 65 6c 73 65 0d 09 20 20 | 65 6d 69 74 5f 6c 69 62 |else.. |emit_lib|
|00005af0| 72 61 72 79 5f 63 61 6c | 6c 20 28 67 65 6e 5f 72 |rary_cal|l (gen_r|
|00005b00| 74 78 20 28 53 59 4d 42 | 4f 4c 5f 52 45 46 2c 20 |tx (SYMB|OL_REF, |
|00005b10| 50 6d 6f 64 65 2c 20 22 | 62 63 6d 70 22 29 2c 20 |Pmode, "|bcmp"), |
|00005b20| 30 2c 0d 09 09 09 20 20 | 20 20 20 53 49 6d 6f 64 |0,.... | SImod|
|00005b30| 65 2c 20 33 2c 0d 09 09 | 09 20 20 20 20 20 58 45 |e, 3,...|. XE|
|00005b40| 58 50 20 28 78 2c 20 30 | 29 2c 20 50 6d 6f 64 65 |XP (x, 0|), Pmode|
|00005b50| 2c 20 58 45 58 50 20 28 | 79 2c 20 30 29 2c 20 50 |, XEXP (|y, 0), P|
|00005b60| 6d 6f 64 65 2c 0d 09 09 | 09 20 20 20 20 20 73 69 |mode,...|. si|
|00005b70| 7a 65 2c 20 50 6d 6f 64 | 65 29 3b 0d 23 65 6e 64 |ze, Pmod|e);.#end|
|00005b80| 69 66 0d 09 20 20 65 6d | 69 74 5f 63 6d 70 5f 69 |if.. em|it_cmp_i|
|00005b90| 6e 73 6e 20 28 68 61 72 | 64 5f 6c 69 62 63 61 6c |nsn (har|d_libcal|
|00005ba0| 6c 5f 76 61 6c 75 65 20 | 28 53 49 6d 6f 64 65 29 |l_value |(SImode)|
|00005bb0| 2c 20 63 6f 6e 73 74 30 | 5f 72 74 78 2c 20 30 2c |, const0|_rtx, 0,|
|00005bc0| 20 30 2c 20 30 29 3b 0d | 09 7d 0d 20 20 20 20 20 | 0, 0);.|.}. |
|00005bd0| 20 72 65 74 75 72 6e 3b | 0d 20 20 20 20 7d 0d 0d | return;|. }..|
|00005be0| 20 20 2f 2a 20 48 61 6e | 64 6c 65 20 73 6f 6d 65 | /* Han|dle some|
|00005bf0| 20 63 6f 6d 70 61 72 65 | 73 20 61 67 61 69 6e 73 | compare|s agains|
|00005c00| 74 20 7a 65 72 6f 2e 20 | 20 2a 2f 0d 0d 20 20 69 |t zero. | */.. i|
|00005c10| 66 20 28 79 20 3d 3d 20 | 43 4f 4e 53 54 30 5f 52 |f (y == |CONST0_R|
|00005c20| 54 58 20 28 6d 6f 64 65 | 29 0d 20 20 20 20 20 20 |TX (mode|). |
|00005c30| 26 26 20 74 73 74 5f 6f | 70 74 61 62 2d 3e 68 61 |&& tst_o|ptab->ha|
|00005c40| 6e 64 6c 65 72 73 5b 28 | 69 6e 74 29 20 6d 6f 64 |ndlers[(|int) mod|
|00005c50| 65 5d 2e 69 6e 73 6e 5f | 63 6f 64 65 20 21 3d 20 |e].insn_|code != |
|00005c60| 43 4f 44 45 5f 46 4f 52 | 5f 6e 6f 74 68 69 6e 67 |CODE_FOR|_nothing|
|00005c70| 29 0d 20 20 20 20 7b 0d | 20 20 20 20 20 20 69 6e |). {.| in|
|00005c80| 74 20 69 63 6f 64 65 20 | 3d 20 28 69 6e 74 29 20 |t icode |= (int) |
|00005c90| 74 73 74 5f 6f 70 74 61 | 62 2d 3e 68 61 6e 64 6c |tst_opta|b->handl|
|00005ca0| 65 72 73 5b 28 69 6e 74 | 29 20 6d 6f 64 65 5d 2e |ers[(int|) mode].|
|00005cb0| 69 6e 73 6e 5f 63 6f 64 | 65 3b 0d 0d 20 20 20 20 |insn_cod|e;.. |
|00005cc0| 20 20 65 6d 69 74 5f 71 | 75 65 75 65 20 28 29 3b | emit_q|ueue ();|
|00005cd0| 0d 20 20 20 20 20 20 78 | 20 3d 20 70 72 6f 74 65 |. x| = prote|
|00005ce0| 63 74 5f 66 72 6f 6d 5f | 71 75 65 75 65 20 28 78 |ct_from_|queue (x|
|00005cf0| 2c 20 30 29 3b 0d 20 20 | 20 20 20 20 79 20 3d 20 |, 0);. | y = |
|00005d00| 70 72 6f 74 65 63 74 5f | 66 72 6f 6d 5f 71 75 65 |protect_|from_que|
|00005d10| 75 65 20 28 79 2c 20 30 | 29 3b 0d 0d 20 20 20 20 |ue (y, 0|);.. |
|00005d20| 20 20 2f 2a 20 4e 6f 77 | 2c 20 69 66 20 69 6e 73 | /* Now|, if ins|
|00005d30| 6e 20 72 65 71 75 69 72 | 65 73 20 72 65 67 69 73 |n requir|es regis|
|00005d40| 74 65 72 20 6f 70 65 72 | 61 6e 64 73 2c 20 70 75 |ter oper|ands, pu|
|00005d50| 74 20 6f 70 65 72 61 6e | 64 73 20 69 6e 74 6f 20 |t operan|ds into |
|00005d60| 72 65 67 73 2e 20 20 2a | 2f 0d 20 20 20 20 20 20 |regs. *|/. |
|00005d70| 69 66 20 28 21 20 28 2a | 69 6e 73 6e 5f 6f 70 65 |if (! (*|insn_ope|
|00005d80| 72 61 6e 64 5f 70 72 65 | 64 69 63 61 74 65 5b 69 |rand_pre|dicate[i|
|00005d90| 63 6f 64 65 5d 5b 30 5d | 29 0d 09 20 20 28 78 2c |code][0]|).. (x,|
|00005da0| 20 69 6e 73 6e 5f 6f 70 | 65 72 61 6e 64 5f 6d 6f | insn_op|erand_mo|
|00005db0| 64 65 5b 69 63 6f 64 65 | 5d 5b 30 5d 29 29 0d 09 |de[icode|][0]))..|
|00005dc0| 78 20 3d 20 66 6f 72 63 | 65 5f 72 65 67 20 28 69 |x = forc|e_reg (i|
|00005dd0| 6e 73 6e 5f 6f 70 65 72 | 61 6e 64 5f 6d 6f 64 65 |nsn_oper|and_mode|
|00005de0| 5b 69 63 6f 64 65 5d 5b | 30 5d 2c 20 78 29 3b 0d |[icode][|0], x);.|
|00005df0| 0d 20 20 20 20 20 20 65 | 6d 69 74 5f 69 6e 73 6e |. e|mit_insn|
|00005e00| 20 28 47 45 4e 5f 46 43 | 4e 20 28 69 63 6f 64 65 | (GEN_FC|N (icode|
|00005e10| 29 20 28 78 29 29 3b 0d | 20 20 20 20 20 20 72 65 |) (x));.| re|
|00005e20| 74 75 72 6e 3b 0d 20 20 | 20 20 7d 0d 0d 20 20 2f |turn;. | }.. /|
|00005e30| 2a 20 48 61 6e 64 6c 65 | 20 63 6f 6d 70 61 72 65 |* Handle| compare|
|00005e40| 73 20 66 6f 72 20 77 68 | 69 63 68 20 74 68 65 72 |s for wh|ich ther|
|00005e50| 65 20 69 73 20 61 20 64 | 69 72 65 63 74 6c 79 20 |e is a d|irectly |
|00005e60| 73 75 69 74 61 62 6c 65 | 20 69 6e 73 6e 2e 20 20 |suitable| insn. |
|00005e70| 2a 2f 0d 0d 20 20 69 66 | 20 28 63 6d 70 5f 6f 70 |*/.. if| (cmp_op|
|00005e80| 74 61 62 2d 3e 68 61 6e | 64 6c 65 72 73 5b 28 69 |tab->han|dlers[(i|
|00005e90| 6e 74 29 20 6d 6f 64 65 | 5d 2e 69 6e 73 6e 5f 63 |nt) mode|].insn_c|
|00005ea0| 6f 64 65 20 21 3d 20 43 | 4f 44 45 5f 46 4f 52 5f |ode != C|ODE_FOR_|
|00005eb0| 6e 6f 74 68 69 6e 67 29 | 0d 20 20 20 20 7b 0d 20 |nothing)|. {. |
|00005ec0| 20 20 20 20 20 69 6e 74 | 20 69 63 6f 64 65 20 3d | int| icode =|
|00005ed0| 20 28 69 6e 74 29 20 63 | 6d 70 5f 6f 70 74 61 62 | (int) c|mp_optab|
|00005ee0| 2d 3e 68 61 6e 64 6c 65 | 72 73 5b 28 69 6e 74 29 |->handle|rs[(int)|
|00005ef0| 20 6d 6f 64 65 5d 2e 69 | 6e 73 6e 5f 63 6f 64 65 | mode].i|nsn_code|
|00005f00| 3b 0d 0d 20 20 20 20 20 | 20 65 6d 69 74 5f 71 75 |;.. | emit_qu|
|00005f10| 65 75 65 20 28 29 3b 0d | 20 20 20 20 20 20 78 20 |eue ();.| x |
|00005f20| 3d 20 70 72 6f 74 65 63 | 74 5f 66 72 6f 6d 5f 71 |= protec|t_from_q|
|00005f30| 75 65 75 65 20 28 78 2c | 20 30 29 3b 0d 20 20 20 |ueue (x,| 0);. |
|00005f40| 20 20 20 79 20 3d 20 70 | 72 6f 74 65 63 74 5f 66 | y = p|rotect_f|
|00005f50| 72 6f 6d 5f 71 75 65 75 | 65 20 28 79 2c 20 30 29 |rom_queu|e (y, 0)|
|00005f60| 3b 0d 0d 20 20 20 20 20 | 20 2f 2a 20 4e 6f 77 2c |;.. | /* Now,|
|00005f70| 20 69 66 20 69 6e 73 6e | 20 72 65 71 75 69 72 65 | if insn| require|
|00005f80| 73 20 72 65 67 69 73 74 | 65 72 20 6f 70 65 72 61 |s regist|er opera|
|00005f90| 6e 64 73 2c 20 70 75 74 | 20 6f 70 65 72 61 6e 64 |nds, put| operand|
|00005fa0| 73 20 69 6e 74 6f 20 72 | 65 67 73 2e 20 20 2a 2f |s into r|egs. */|
|00005fb0| 0d 20 20 20 20 20 20 69 | 66 20 28 21 20 28 2a 69 |. i|f (! (*i|
|00005fc0| 6e 73 6e 5f 6f 70 65 72 | 61 6e 64 5f 70 72 65 64 |nsn_oper|and_pred|
|00005fd0| 69 63 61 74 65 5b 69 63 | 6f 64 65 5d 5b 30 5d 29 |icate[ic|ode][0])|
|00005fe0| 0d 09 20 20 28 78 2c 20 | 69 6e 73 6e 5f 6f 70 65 |.. (x, |insn_ope|
|00005ff0| 72 61 6e 64 5f 6d 6f 64 | 65 5b 69 63 6f 64 65 5d |rand_mod|e[icode]|
|00006000| 5b 30 5d 29 29 0d 09 78 | 20 3d 20 66 6f 72 63 65 |[0]))..x| = force|
|00006010| 5f 72 65 67 20 28 69 6e | 73 6e 5f 6f 70 65 72 61 |_reg (in|sn_opera|
|00006020| 6e 64 5f 6d 6f 64 65 5b | 69 63 6f 64 65 5d 5b 30 |nd_mode[|icode][0|
|00006030| 5d 2c 20 78 29 3b 0d 0d | 20 20 20 20 20 20 69 66 |], x);..| if|
|00006040| 20 28 21 20 28 2a 69 6e | 73 6e 5f 6f 70 65 72 61 | (! (*in|sn_opera|
|00006050| 6e 64 5f 70 72 65 64 69 | 63 61 74 65 5b 69 63 6f |nd_predi|cate[ico|
|00006060| 64 65 5d 5b 31 5d 29 0d | 09 20 20 28 79 2c 20 69 |de][1]).|. (y, i|
|00006070| 6e 73 6e 5f 6f 70 65 72 | 61 6e 64 5f 6d 6f 64 65 |nsn_oper|and_mode|
|00006080| 5b 69 63 6f 64 65 5d 5b | 31 5d 29 29 0d 09 79 20 |[icode][|1]))..y |
|00006090| 3d 20 66 6f 72 63 65 5f | 72 65 67 20 28 69 6e 73 |= force_|reg (ins|
|000060a0| 6e 5f 6f 70 65 72 61 6e | 64 5f 6d 6f 64 65 5b 69 |n_operan|d_mode[i|
|000060b0| 63 6f 64 65 5d 5b 31 5d | 2c 20 79 29 3b 0d 0d 20 |code][1]|, y);.. |
|000060c0| 20 20 20 20 20 65 6d 69 | 74 5f 69 6e 73 6e 20 28 | emi|t_insn (|
|000060d0| 47 45 4e 5f 46 43 4e 20 | 28 69 63 6f 64 65 29 20 |GEN_FCN |(icode) |
|000060e0| 28 78 2c 20 79 29 29 3b | 0d 20 20 20 20 20 20 72 |(x, y));|. r|
|000060f0| 65 74 75 72 6e 3b 0d 20 | 20 20 20 7d 0d 0d 20 20 |eturn;. | }.. |
|00006100| 2f 2a 20 54 72 79 20 77 | 69 64 65 6e 69 6e 67 20 |/* Try w|idening |
|00006110| 69 66 20 77 65 20 63 61 | 6e 20 66 69 6e 64 20 61 |if we ca|n find a|
|00006120| 20 64 69 72 65 63 74 20 | 69 6e 73 6e 20 74 68 61 | direct |insn tha|
|00006130| 74 20 77 61 79 2e 20 20 | 2a 2f 0d 0d 20 20 69 66 |t way. |*/.. if|
|00006140| 20 28 63 6c 61 73 73 20 | 3d 3d 20 4d 4f 44 45 5f | (class |== MODE_|
|00006150| 49 4e 54 20 7c 7c 20 63 | 6c 61 73 73 20 3d 3d 20 |INT || c|lass == |
|00006160| 4d 4f 44 45 5f 46 4c 4f | 41 54 29 0d 20 20 20 20 |MODE_FLO|AT). |
|00006170| 7b 0d 20 20 20 20 20 20 | 66 6f 72 20 28 77 69 64 |{. |for (wid|
|00006180| 65 72 5f 6d 6f 64 65 20 | 3d 20 49 4e 43 5f 4d 4f |er_mode |= INC_MO|
|00006190| 44 45 20 28 6d 6f 64 65 | 29 3b 0d 09 20 20 20 28 |DE (mode|);.. (|
|000061a0| 28 69 6e 74 29 20 77 69 | 64 65 72 5f 6d 6f 64 65 |(int) wi|der_mode|
|000061b0| 20 3c 20 28 69 6e 74 29 | 20 4d 41 58 5f 4d 41 43 | < (int)| MAX_MAC|
|000061c0| 48 49 4e 45 5f 4d 4f 44 | 45 0d 09 20 20 20 20 26 |HINE_MOD|E.. &|
|000061d0| 26 20 47 45 54 5f 4d 4f | 44 45 5f 43 4c 41 53 53 |& GET_MO|DE_CLASS|
|000061e0| 20 28 77 69 64 65 72 5f | 6d 6f 64 65 29 20 3d 3d | (wider_|mode) ==|
|000061f0| 20 63 6c 61 73 73 29 3b | 0d 09 20 20 20 77 69 64 | class);|.. wid|
|00006200| 65 72 5f 6d 6f 64 65 20 | 3d 20 49 4e 43 5f 4d 4f |er_mode |= INC_MO|
|00006210| 44 45 20 28 77 69 64 65 | 72 5f 6d 6f 64 65 29 29 |DE (wide|r_mode))|
|00006220| 0d 09 7b 0d 09 20 20 69 | 66 20 28 63 6d 70 5f 6f |..{.. i|f (cmp_o|
|00006230| 70 74 61 62 2d 3e 68 61 | 6e 64 6c 65 72 73 5b 28 |ptab->ha|ndlers[(|
|00006240| 69 6e 74 29 20 77 69 64 | 65 72 5f 6d 6f 64 65 5d |int) wid|er_mode]|
|00006250| 2e 69 6e 73 6e 5f 63 6f | 64 65 0d 09 20 20 20 20 |.insn_co|de.. |
|00006260| 20 20 21 3d 20 43 4f 44 | 45 5f 46 4f 52 5f 6e 6f | != COD|E_FOR_no|
|00006270| 74 68 69 6e 67 29 0d 09 | 20 20 20 20 7b 0d 09 20 |thing)..| {.. |
|00006280| 20 20 20 20 20 78 20 3d | 20 63 6f 6e 76 65 72 74 | x =| convert|
|00006290| 5f 74 6f 5f 6d 6f 64 65 | 20 28 77 69 64 65 72 5f |_to_mode| (wider_|
|000062a0| 6d 6f 64 65 2c 20 78 2c | 20 75 6e 73 69 67 6e 65 |mode, x,| unsigne|
|000062b0| 64 70 29 3b 0d 09 20 20 | 20 20 20 20 79 20 3d 20 |dp);.. | y = |
|000062c0| 63 6f 6e 76 65 72 74 5f | 74 6f 5f 6d 6f 64 65 20 |convert_|to_mode |
|000062d0| 28 77 69 64 65 72 5f 6d | 6f 64 65 2c 20 79 2c 20 |(wider_m|ode, y, |
|000062e0| 75 6e 73 69 67 6e 65 64 | 70 29 3b 0d 09 20 20 20 |unsigned|p);.. |
|000062f0| 20 20 20 65 6d 69 74 5f | 63 6d 70 5f 69 6e 73 6e | emit_|cmp_insn|
|00006300| 20 28 78 2c 20 79 2c 20 | 30 2c 20 75 6e 73 69 67 | (x, y, |0, unsig|
|00006310| 6e 65 64 70 2c 20 61 6c | 69 67 6e 29 3b 0d 09 20 |nedp, al|ign);.. |
|00006320| 20 20 20 20 20 72 65 74 | 75 72 6e 3b 0d 09 20 20 | ret|urn;.. |
|00006330| 20 20 7d 0d 09 7d 0d 20 | 20 20 20 7d 0d 0d 20 20 | }..}. | }.. |
|00006340| 2f 2a 20 48 61 6e 64 6c | 65 20 61 20 6c 69 62 20 |/* Handl|e a lib |
|00006350| 63 61 6c 6c 20 6a 75 73 | 74 20 66 6f 72 20 74 68 |call jus|t for th|
|00006360| 65 20 6d 6f 64 65 20 77 | 65 20 61 72 65 20 75 73 |e mode w|e are us|
|00006370| 69 6e 67 2e 20 20 2a 2f | 0d 0d 20 20 69 66 20 28 |ing. */|.. if (|
|00006380| 63 6d 70 5f 6f 70 74 61 | 62 2d 3e 68 61 6e 64 6c |cmp_opta|b->handl|
|00006390| 65 72 73 5b 28 69 6e 74 | 29 20 6d 6f 64 65 5d 2e |ers[(int|) mode].|
|000063a0| 6c 69 62 5f 63 61 6c 6c | 29 0d 20 20 20 20 7b 0d |lib_call|). {.|
|000063b0| 20 20 20 20 20 20 63 68 | 61 72 20 2a 73 74 72 69 | ch|ar *stri|
|000063c0| 6e 67 20 3d 20 63 6d 70 | 5f 6f 70 74 61 62 2d 3e |ng = cmp|_optab->|
|000063d0| 68 61 6e 64 6c 65 72 73 | 5b 28 69 6e 74 29 20 6d |handlers|[(int) m|
|000063e0| 6f 64 65 5d 2e 6c 69 62 | 5f 63 61 6c 6c 3b 0d 20 |ode].lib|_call;. |
|000063f0| 20 20 20 20 20 2f 2a 20 | 49 66 20 77 65 20 77 61 | /* |If we wa|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.